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
      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
       
    • Por DaniellyNelly
      Olá amigos, 
      Preciso muito da ajuda de vocês, sou nova tanto aqui quanto nessa área e preciso de uma luz pra resolver esse pequeno probleminha.
      O código a seguir esta me dando este seguinte erro: 
      erro '80020009'
      /smart/bridge/carne.asp, linha 106
      Código:
       
      <%
          dim rsLancamento
          sql = "select * from vw_lancamento where id_parceiro="&request("id_parceiro")&" and tp_lancamento=1 and id_situacao_lancamento=1 order by dt_vencimento asc"
          set rsLancamento = GetRS(sql)
          
          dim rsParceiro
          sql = "select * from parceiro where id_parceiro="&request("id_parceiro")
          set rsParceiro = GetRS(sql)
          
          dim rsMatricula
          sql = "select * from matricula where id_aluno="&request("id_parceiro")
          set rsMatricula = GetRS(sql)
          
          dim rsCurso
          sql = "select * from curso where id_curso="&rsMatricula("id_curso")
          set rsCurso = GetRS(sql)
          
          %>
      </head>
      <body>
      <div style="width:80%; margin-left:10%;"><!--#include file = "topofixo.asp" --></div>
      <div id="CARNE">
      <div id="print" align="center"><input type="button" name="imprimir" value="Imprimir" onClick="window.print();"></div>
      <div id="printable">
          <DIV ID="TOPO">
          
          <p>ALUNO: <%= rsParceiro("nome")%></p>
          <p>CPF: <%= rsParceiro("CPF")%></p>
          <p>ENDERE&Ccedil;O: <%= rsParceiro("endereco")%> </p>
          <p>BAIRRO: <%= rsParceiro("bairro")%> </p>
          <p>CURSO: <%= rsCurso("ds_curso")%></p>
          <p>ANO: <%=year(now)%></p>
          
          </DIV>
          
          <%if rsLancamento.eof then%>
          
          <p align="center">SEM LANÇAMENTOS CADASTRADOS</p>
          
          <%else%>
        <%dim cont%>
          <%do while not rsLancamento.eof%>
        <%cont = cont + 1%>
        <div id="c_1" style="BORDER-LEFT:dotted 1px #000;">
        
        <p style="float:left; margin:0;">RECIBO DO CLIENTE</p>
        
        <p align="center" CLASS="PARCELA"><%=cont%></p>
        
        <p class="c_t">CLIENTE: <%= rsParceiro("respfinan")%></p>
        <p class="c_t">VENCIMENTO: <%=rsLancamento("dt_vencimento")%></p>
        <p class="c_t">VALOR A PAGAR: R$<%=formatnumber(rsLancamento("vr_curso"),2)%></p>
        <p class="c_t">VALOR PAGO: </p>
        <p class="c_t">AUTENTICA&Ccedil;&Atilde;O: <%=rsLancamento("id_lancamento")%></p>
          
          </div>
            <div id="c_1">
        
        <p style="float:left; margin:0;">&nbsp;</p>
        
        <p align="center" CLASS="PARCELA"><%=cont%></p>
        
        <p class="c_t">CLIENTE: <%= rsParceiro("respfinan")%></p>
        <p class="c_t">VENCIMENTO: <%=rsLancamento("dt_vencimento")%></p>
        <p class="c_t">VALOR A PAGAR: R$<%=formatnumber(rsLancamento("vr_curso"),2)%></p>
        <p class="c_t">VALOR PAGO: </p>
        <p class="c_t">AUTENTICA&Ccedil;&Atilde;O: <%=rsLancamento("id_lancamento")%></p>
          
          </div>
          <%rsLancamento.movenext 
          loop%>   <%end if%></div>
       
      Se alguém puder ajudar ficarei eternamente grata.
×

Informação importante

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