Início‎ > ‎

Cada módulo deve garantir a sua segurança (inclusive validação de dados)

A implementação de sistemas seguros deve sempre garantir o princípio de segurança em profundidade. Isto quer dizer que cada módulo deve ser responsável por garantir a sua própria segurança. Num paralelo com a programação por contrato, cada módulo deve garantir que as sua pré-condições são satisfeitas e também verificar que as pós-condições dos módulos que chamar foram satisfeitas corretamente.

Em outras palavras, um módulo deve sempre desconfiar de dados fornecidos por outros módulos, fazendo a validação dos dados que recebe ao ser chamado e também dos dados que recebe quando chama outros módulos.

O mesmo se aplica a camadas quando o sistema for estruturado por camadas. Por exemplo, a camada de negócio não deve confiar cegamente nos dados recebidos da camada de apresentação, nem nos dados recebidos da camada de persistência ou da base de dados. É importante que cada camada faça a validação dos dados.

Este princípio é ainda mais importante no caso de sistemas que permitem que as camadas sejam acessadas remotamente.

Por exemplo, muitos sistemas J2EE são estruturados de forma a terem uma camada de apresentação independente da camada de negócios, que costuma ser implementada como um EJB. Neste caso, é de suma importância que a camada de negócio faça a validação dos dados que receber pois o EJB pode ser chamado remotamente sem que haja interferência da camada de apresentação. Como as camadas são independentes, qualquer uma delas pode ser trocada sem que haja necessidade de alterar a outra. Desta forma, se a nova implementação não contiver os mesmos controles que a anterior, podem surgir problemas de segurança inesperados.
Comments