Início‎ > ‎

Validar os dados de entrada

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:

  • Tipo do dado (string, inteiro, real, data/hora, etc.);

  • Conjunto de caracteres permitidos;

  • Tamanhos máximo e mínimo;

  • Se valores null são permitidos;

  • Se o dado é obrigatório ou se pode ser omitido;

  • Faixa permitida para valores numéricos;

  • Conjunto específico de valores permitidos (enumeration);

  • Padrões específicos, tais como expressões regulares.


É 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.

Comments