A manipulação dos dados fornecidos como entrada a uma aplicação é uma das principais formas de ataque a aplicações. Para evitar ataques pela manipulação dos dados de entrada, deve-se verificar se estes dados estão no formato esperado antes de utilizá-los na aplicação.
Para a validação de dados contidos em arquivos ou para strings, podem ser usadas as classes java.util.regex , que permite que o formato dos parâmetros esperados sejam definidos como expressões regulares e permitem verificar se os parâmetros recebidos estão de acordo com a expressão regular definida. É importante que apenas os dados que estejam exatamente no formato esperado sejam processados pela aplicação e que os demais sejam descartados.
A validação deve ser feita com base numa descrição dos valores permitidos para cada parâmetro ou dado de entrada. Esta descrição deve incluir:
É recomendável
que seja adotado um sistema padrão para verificação
dos parâmetros de entrada para todas as aplicações
e que, quando possível, a verificação seja feita
tanto externamente à aplicação (por meio dos
chamados firewalls de aplicações web) quanto
pelo seu próprio código. Na URL
http://stinger.sourceforge.net,
encontra-se o mecanismo de verificação de entrada para
sistemas J2EE chamado Stinger. Outro mecanismo padrão
que pode ser utilizado é extensão Validator do
framework Struts
(http://struts.apache.org/2.0.11.2/docs/validation.html). No caso específico de campos HTML, o AntiSamy (http://www.owasp.org/index.php/Category:OWASP_AntiSamy_Project) é uma ferramenta que permite que trechos de HTML sejam verificados face a uma política pré-definida. A ferramenta contém algumas políticas pré-definidas, mas permite a definição de políticas específicas sobre que tipo de código HTML é aceito como entrada por sua aplicação. |
