Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

upload de arquivos - como impedir o ataque

vou implementar upload de arquivos no webapp.

Fiquei preocupado vendo esse tipo de ataque. Uma dúvida: usando php, apenas limitando as extensões do arquivo, e sabendo que o paradeiro destes arquivos não vai ser um webserver, já protege deste tipo de ataque? Por acaso saberia dizer qual seria a melhor saída no php?

Obrigado!

3 respostas

Oi Vladimir tudo bem?

Só limitando as extensões dos arquivos impede o ataque por upload chamado PHP injection.

Esse ataque sobe uma página com extensão php com vários scripts maliciosos que visam tomar o controle da página.

Espero ter ajudado!!!

Olá André, obrigado pela resposta!

Entendo que *.php não seria uma extensão que poderíamos permitir, e, vez que o form também vai ser armazenado no banco, preciso tratar para ataque de Javascript também, certo?

Neste campo especificamente então, aliado as demais preocupações explicadas no curso, tenho que cuidar do SQL injection, por prepared statement, cuidar para subir arquivos apenas com extensões seguras, filtrar tags de script nos campos quando armazenar no banco de dados.

Mais uma vez valeu! curso rápido e excelente.

solução

Você tem que fazer uma página que todas as informações sensíveis e de negócio estejam no back end. Não tem como se proteger do Javascript porque ele fica do lado cliente.

Mesmo que você use de recursos como Module Pattern que encapsula e protege o Javascript sei umas 2 ou 3 maneiras de desintegrar ele.

Exemplo do que se preocupar no Javascript.

Ajax:

Não deixar uma página cadastro_post.php que deixe subir para o banco qualquer dados. Se você está em ambiente intranet verifique o LDAP do Active Directory do Windows para ver se o usuário tem acesso devido. E dentro da página PHP faça uma validação para ter certeza que o usuário não está inserindo dados inválidos. O mesmo para os outros verbos HTTP.

Regras do Negócio no Javascript:

Imagine que você tenha um sistema que gere boletos, você não pode deixar as regras de como gerar boletos dentro do Javascript você tem que deixar todas elas no back end.

Não sei se é o seu caso (e nem precisa falar rsrsrs) mas muitas empresas tem servidores lentos então a gente tem que se virar equilibrando o processamento jogando parte do back no front mas tem que tomar muito cuidado para com que jogar.

Eu por exemplo deixo só a parte visual para o javascript criar e deixo todas as informações no back end (ASP.NET). Assim ganho muita perfomance.

Espero ter ajudado e bons estudos!!!