alh 1 Denunciar post Postado Setembro 14, 2016 Olá Pessoal... Tenho um Sistema que faz o Upload de arquivos, para constar: NÃO SÃO IMAGENS, então quero fazer a verificação se o arquivo realmente é o verdadeiro e evitar Invasão pelo upload.. Ao fazer um teste liberando a extensão para imagens, após liberar a extensão ".jpg" para testes Peguei um arquivo HTML e salvei como ."jpg", ao fazer o upload ele ACEITA esse arquivo como se fosse uma Imagem, e até mesmo utilizando o ( ($_FILES['arquivo']['type'] ) ele mostra como sendo image/jpg, sendo que na verdade é um arquivo HTML mascarado a extensão em jpg... A Pergunta: Como validar de Forma Segura, pois quero utilizar para dois casos o upload, ambos 1 em cada momento, nesse caso uma extensão para um upload de arquivos PDF, e outro caso para extensão .PFX para certificados de nota eletronica... Aguarda a colaboração dos expert's... Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Setembro 14, 2016 Você deve validar o mime type do arquivo <?php $finfo = new finfo( FILEINFO_MIME_TYPE ); $mime_type_arquivo = $finfo->file( $_FILES[ 'userfile' ] [ 'tmp_name' ] ); // O nome temporário do arquivo, como foi guardado no servidor $mime_types_permitidos = array( 'image/jpg', 'image/png' ); if( in_array( $mime_type_arquivo, $mime_types_permitidos ) ) { echo 'Arquivo válido!'; } else { echo 'Arquivo negado!'; } Compartilhar este post Link para o post Compartilhar em outros sites
alh 1 Denunciar post Postado Setembro 17, 2016 Você deve validar o mime type do arquivo <?php $finfo = new finfo( FILEINFO_MIME_TYPE ); $mime_type_arquivo = $finfo->file( $_FILES[ 'userfile' ] [ 'tmp_name' ] ); // O nome temporário do arquivo, como foi guardado no servidor $mime_types_permitidos = array( 'image/jpg', 'image/png' ); if( in_array( $mime_type_arquivo, $mime_types_permitidos ) ) { echo 'Arquivo válido!'; } else { echo 'Arquivo negado!'; } Olá amigo, testei esse metódo e deu erro, lembrando que não será utilizado para Imagens e sim para outros arquivos como falei acima, mas do mesmo modo pesquisei sobre e ele também é Vulnerável, ou seja tem como burlar...de qualquer jeito agradeço muito sua ajuda, e se puder continuar a contribuir para isso será de grande ajuda... Alguem sabe outro método? O meu caso é para arquivos PFX para certificados de nfe.. Compartilhar este post Link para o post Compartilhar em outros sites
alh 1 Denunciar post Postado Setembro 17, 2016 Alguem sabe algum outro método para validar e evitar a renomear a extensão dos arquivos... Se alguem souber fico grato... Compartilhar este post Link para o post Compartilhar em outros sites
alh 1 Denunciar post Postado Setembro 17, 2016 Alguem sabe algum outro método para validar e evitar que utilizem arquivos com a extensão dos arquivos renomeada.. Se alguem souber fico grato... Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Setembro 17, 2016 Olá amigo, testei esse metódo e deu erro, lembrando que não será utilizado para Imagens e sim para outros arquivos como falei acima, mas do mesmo modo pesquisei sobre e ele também é Vulnerável, ou seja tem como burlar...de qualquer jeito agradeço muito sua ajuda, e se puder continuar a contribuir para isso será de grande ajuda... Alguem sabe outro método? O meu caso é para arquivos PFX para certificados de nfe.. Também já tinha ouvido falar, porem era uma falha para arquivos de MP3, mas era na versão inferior a 5.4.16 O PHP até reportou o BUG neste commit https://bugs.php.net/bug.php?id=64830 Ou seja, use versão do PHP >= 5.6 que diversos bugs já foram corrigidos. Do mais, mais seguro que finfo desconheço, pois finfo foi escrito para validar o binário do arquivo, indo na raiz do problema. No teu caso o MIME e este: application/x-pkcs12 $mime_types_permitidos = array('application/x-pkcs12'); http://pki-tutorial.readthedocs.io/en/latest/mime.html Se achar alguma outra coisa que valide binários. Não deixe de compartilhar! Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Setembro 19, 2016 Bom, o colega Williams Duarte já explicou e o exemplo foi com imagens apenas para ilustrar a solução, você deve colocar os devidos mime-types que lhe forem convenientes. Compartilhar este post Link para o post Compartilhar em outros sites