Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tony_lu

Upload de Arquivo PDF

Recommended Posts

Ola pessoal estou criando um sistema de upload de apenas arquivos em PDF. Como se trata de um sistema de usuarios, para que usuarios cadastrados no site possam enviar arquivos, gostaria deste recurso com total segurança, e gostaria de saber se a forma que estou fazendo upload tem alguma vulnerabilidade:

 

// Upload de PDF
$pathToSave = "../pdf/";


if( $_FILES ) 
                { // Verificando se existe o envio de arquivos.


                    if( $_FILES['pdf'] ) 
                    { // Verifica se o campo não está vazio.


                        $dir = $pathToSave; // Diretório que vai receber o arquivo.
                        $tmpName = $_FILES['pdf']['tmp_name']; // Recebe o arquivo temporário.


                        $name = $_FILES['pdf']['name']; // Recebe o nome do arquivo.


                        preg_match_all('/\.[a-zA-Z0-9]+/', $name , $extensao);
                        if(!in_array(strtolower(current(end($extensao))), array('.pdf', '.PDF', '.Pdf')))
                        {
$msg = 'Permitido apenas arquivos PDF';
                        }




                        // move_uploaded_file( $arqTemporário, $nomeDoArquivo )
                        if( move_uploaded_file( $tmpName, $dir . $name ) ) 
                        { // move_uploaded_file irá realizar o envio do arquivo.        
                            $erro = 0;     
                        } else 
                        {           
                            $erro = 1;            
                        }


                    }


                }

Podem me passar dicas de como melhorar a segurança deste Upload? Lembrando que pode ser enviado apenas arquivos em PDF.

 

Obrigado!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tony, estou com um pouco de pressa, por isso não posso elaborar melhor a resposta, mas sugiro que dê uma atenção nos seguintes tópicos:

 

1 - Se o nome final do arquivo não for importante, renomeie-o para algum valor aleatorio. Se for, retire acentuação, caracteres especiais e principalmente: valide-o.

2 - Verifique o tipo de arquivo. E com isso não estou me referindo à extensão, que é algo que você já está verificando. Link externo

3 - Verifique o tamanho do arquivo (isso não é tão importante, mas é interessante).

4 - Cuide com as permissões de pasta e de arquivos (chmod). Dê uma lida a respeito.

 

Obs: existe um jeito mais simples e sem utilizar expressões regulares para extrair a extensão do arquivo:

$extensao = end( explode( '.', $arquivo ) );

É interessante você conhecer também: http://php.net/manual/en/class.splfileinfo.php

 

Abraços e boa sorte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.