Ir para conteúdo

POWERED BY:

Arquivado

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

alh

Validação de Arquivo de UPLOAD

Recommended Posts

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

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

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

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

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

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

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

×

Informação importante

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