Ir para conteúdo
onedev

Filtrar Upload de arquivos apenas para imagens

Recommended Posts

Olá Pessoal,

qual a forma mais segura de filtrar um upload asp de arquivos para somente imagens?

Tentei reconhecer a extensão do arquivo e limitar apenas upload de arquivo .gif/.jpg e também filtrar pelo tipo de arquivo. Porém algum mal intencionado pode simplesmente renomear um arquivo malicioso para .gif, fazer o upload e depois acessar o arquivo para executa-lo. Alguém conhece ou recomenda algum filtro eficiente?

Utilize os seguintes recursos:
For Each File in Upload.Files 
   If File.ContentType <> "image/gif" Then 
      Resposta = "Arquivo enviado nao e um formato valido de imagem." 
      File.Delete 
   End If 
Next

 

For Each File in Upload.Files 
   If UCase(Right(File.Path, 3)) <> "gif" Then 
      Resposta = "Arquivo enviado nao e um formato valido de imagem." 
      File.Delete 
   End If 
Next
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Após muita pesquisa cheguei a conclusão de que não é possível limitar o upload de arquivos pelo tipo. Pois ao alterar a extensão do arquivo de .php para .gif por exemplo o filtro não irá barrar. 

Como solução para evitar vulnerabilidades, o ideal é se certificar de dar apenas permissão de leitura e escrita na pasta que receberá os arquivos do upload e nunca liberar permissão de execução. Pois assim mesmo que um arquivo malicioso seja enviado, ele não poderar ser executado. Instruções aqui: https://wiki.locaweb.com.br/pt-br/Permissão_de_arquivos_–_Como_se_proteger_da_execução_de_scripts_indesejados

 

Além disso a instalação de uma ferramenta como o Eset File Security no servidor, é essencial para varrer arquivos maliciosos.
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por jmggames
      boa noite, estou com um script de upload de imagens, que após fazer o upload, ele finaliza com uma miniatura da imagem que acabou de ser enviada.
      porem alem de mostrar a miniatura da imagem, eu gostaria que mostrasse também um link gerado do upload da imagem, para que a pessoa que fez o upload, pegue o link e guarde para poder chegar ate a imagem futuramente.
      eu gostaria que o link fosse gerado logo após a mensagem "imagem enviada com sucesso!"  alguém pode me ajudar?
      script do site:
       
      <html>
      <head>
       <title>Upload de imagens</title>
       <meta charset="utf-8">
       <meta name="viewport" content="width=device-width, initial-scale=1">
       <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
       <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
       <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
       <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
      </head>
      <body>
      <div class="container">
      <h2><strong>Envio de imagens</strong></h2><hr>
      <form method="POST" enctype="multipart/form-data">
        <label for="conteudo">Enviar imagem:</label>
        <input type="file" name="pic" accept="image/*" class="form-control">
        <div align="center">
          <button type="submit" class="btn btn-success">Enviar imagem</button>
        </div>
      </form>
       
       <hr>
       
       <?php
       if(isset($_FILES['pic']))
       {
          $ext = strtolower(substr($_FILES['pic']['name'],-4)); //Pegando extensão do arquivo
          $new_name = date("Y.m.d-H.i.s") . $ext; //Definindo um novo nome para o arquivo
          $dir = './imagens/'; //Diretório para uploads
       
          move_uploaded_file($_FILES['pic']['tmp_name'], $dir.$new_name); //Fazer upload do arquivo
          echo '<div class="alert alert-success" role="alert" align="center">
                <img src="./imagens/' . $new_name . '" class="img img-responsive img-thumbnail" width="200"> 
                <br>
                Imagem enviada com sucesso!
                <br>
                <a href="exemplo_upload_de_imagens.php">
                <button class="btn btn-default">Enviar nova imagem</button>
                </a></div>';
       } ?>
      </div>
      <body>
      </html>
       

    • Por jmggames
      bom dia, eu tinha uns anos atras um script de upload de imagens que depois de fazer o envio do upload, ele gerava um link para a pessoa ter acesso a essa imagem, como em um site de upload normal, porem eu acabei perdendo o script, e por ter anos, acho que a pagina onde estava não existe mais.
      gostaria de saber se alguém pode me ajudar com esse script.
    • Por laumello12
      Galera ajudinha
      Como faço para consumir um web service pronto em um projeto. Preciso só que ele busque no web service e traga na web 
      HELP
    • Por alecarnero
      Eu fiz uma pagina de login SiteMaster.asp trabalha com uma pagina verify.asp , coloque ela como documento padrao , problema que sim
      o usuario ja tem gravada alguma pagina de antes ele consegue accesar sem pasar pela login page
       
      http://localhost/teste/barra.asp
       
      quem souber o nome das paginas consegue acceso direito  
       
      que tenho que agregar para somente accese qualquer pagina quem passo pelo login?
       
       
      Obrigado por qualquer orientaçao  
       
      Alejandro
       
       
       
       
       
       
       
       
       
       
    • Por mmalainho
      Tenho um site em ASP nas línguas Português, Espanhol e Romeno.
      O serviço de hospedagem alterou o MYSQL ODBC para a versão 5.3 ANSI e agora não consigo fazer o update de texto em romeno (por exemplo Lecția 8 - Îmbunătățirea confortului mișcării corpului - Amortizarea )na base dados através de um formulário HTML.
       
      Tenho uma conexão para listar tudo sem problemas em todas as línguas mas fazer o insert/update não funciona em nenhuma das línguas com palavras acentuadas.
       
      conn.ConnectionString="DRIVER={MySQL ODBC 5.3 ANSI Driver}; SERVER="&srv&"; DATABASE="&bd&"; UID="&uid&";PASSWORD="&pws&";PORT="&port&"; OPTION=3; charset=utf8; "

      Já experimentei retirar  charset=utf8; e assim consigo inserir/atualizar em português e espanhol, mas Romeno não.
      conniu.ConnectionString="DRIVER={MySQL ODBC 5.3 ANSI Driver}; SERVER="&srv&"; DATABASE="&bd&"; UID="&uid&";PASSWORD="&pws&";PORT="&port&"; OPTION=3;"
         
       
      Versão do MySQL Versão do servidor: 5.1.73-community
      Charset: utf8_general_ci
      Tabela está também com utf8_general_ci
       
      Alguma sugestão ficaria muito grato
       
×

Informação importante

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