Daily Archives: March 12, 2007

Segurança em upload de arquivos no PHP

Normalmente usa-se o metodo de verificar a extensão de um arquivo para validação antes de ser enviado ao servidor. Esse metodo pode ser facilmente burlado, como pude comprovar quando tentaram enviar exploids para meu servidor no arquivo de exemplo que deixei no post sobre Upload de arquivos com o Flash 8.
Antes que o Wendel quebre minhas pernas, resolvi pesquisar outros meios para fazer upload seguros de arquivos. Encontrei esse artigo bem interessante no PHPBRASIL. Basicamente antes de fazer o upload, verifica-se o Mime Type do arquivo, por exemplo:
[php]
if($_FILES[‘userfile’][‘type’] == ‘application/x-shockwave-flash’){
//arquivo flash por ser enviado
}else{
//arquivo não é do tipo Flash :õ(
}
[/php]

Sendo assim, não se deve verificar somente a extensão dos arquivos para garantir maior segurança para seu servidor. Segue uma lista dos Mime Types disponiveis.

Para saber mais
Gerenciar o upload de arquivos:
http://www.php.net/manual/pt_BR/features.file-upload.php

Mime Types
http://www.webmaster-toolkit.com/mime-types.shtml

Upload de imagens com segurança
http://www.phpbrasil.com/articles/article.php/id/707