Início‎ > ‎

Tratar corretamente todos os erros da aplicação

Erros não tratados pela aplicação podem revelar informações críticas sobre a arquitetura de uma aplicação web, já que os sistemas sobre o qual executa (application server, web server, banco de dados), normalmente fornecem páginas padronizadas de depuração quando detectam um erro. Estas mensagens padronizadas, em geral, contêm informações como nomes de tabelas do banco, nomes de arquivos de código, nomes ou endereços IP de servidores, linguagem de programação utilizada, versões de software, etc. Estas informações, quando reveladas a um adversário mal intencionado, podem ajudá-lo a escolher as técnicas de ataque mais adequadas contra a aplicação em questão.

Outra prática comum é a inclusão do texto completo de exceções levantadas em páginas de erro, incluindo os dados da pilha de chamadas (stack trace). Os dados das exceções também permitem que um adversário descubra detalhes da arquitetura interna da aplicação, como frameworks e servidores utilizados. Em alguns casos, os dados contidos nas exceções permite que se determine a versão de cada biblioteca ou sistema utilizado na aplicação, permitindo que o adversário pesquise vulnerabilidades conhecidas nestas versões de forma a conseguir atacar a aplicação. Por exemplo, se for possível determinar o tipo e a versão do servidor web utilizado, é possível verificar na internet se existe alguma vulnerabilidade conhecida para esta versão e usar este conhecimento para invadir o servidor.

A aplicação deve ser implementada de maneira a tratar adequadamente todos os erros. Quando um erro ocorrer, a aplicação deve responder com uma página pré-determinada que informe o erro ao usuário, mas que não revele nenhum detalhe interno da aplicação.

Comments