Por que eu devo ler este artigo:Neste artigo veremos os mecanismos de validação que o framework ASP.NET MVC nos disponibiliza e quais as situações onde cada um destes mecanismos se encaixa em uma aplicação web. Veremos validações através do recurso de Data Annotation, jQuery Validation, HTML Helpers, Remote Validation e ainda um recurso avançado de validações customizadas, onde os próprios desenvolvedores desenvolvem uma validação personalizada.

Um dos principais requisitos necessários em uma aplicação web é o de segurança. Em algumas aplicações, como as bancárias este pode ser o principal requisito. Por isso a tecnologia utilizada para o desenvolvimento de aplicações web deve oferecer o maior número de mecanismos de segurança, afim de impedir que usuários mal-intencionados possam burlar os sites, informar dados inválidos, ou fazer-se passar por outra pessoa.

Outro ponto de importância em uma aplicação web é a questão da velocidade do site, não existe nada mais desagradável para o usuário do que um site lento e que demora muito para responder, ou simplesmente congela, sendo que às vezes chega até a travar o browser, forçando o usuário a reiniciar o navegador. Certamente quando isso ocorre o usuário pensará duas vezes antes de entrar novamente, além de às vezes provocar um efeito em cascata, quando ele comenta com outras pessoas da dificuldade de iteração com o site.

Então, não basta termos apenas uma aplicação web segura, também precisamos de agilidade. Podemos aplicar formas mais rápidas e mais lentas de fazermos as validações, então cabe a nós decidir qual é a mais adequada em cada cenário.

Uma validação no lado cliente é sempre mais rápida do que uma validação que precisa ir ao servidor. Porém, isso não significa que não devamos ter validações no lado servidor, pois existem situações onde não temos dados suficientes para realizarmos a validação no lado cliente. Ainda existe a possibilidade de existir usuários que entendem um pouco de ambiente web e desativem o JavaScript do navegador, de maneira que as validações no lado cliente parem de funcionar. Portanto não basta aos desenvolvedores implementarem validações no lado cliente, eles devem validar as informações também no lado servidor, ainda que seja a mesma informação sendo avaliada mais de uma vez. Desta forma, se a validação do lado cliente falhar, a do servidor não falha.

Por mais simples que sejam alguns sistemas web, eles sempre precisam de algum tipo de validação, pois os usuários muitas vezes não têm atenção no preenchimento dos dados, devendo nós desenvolvedores ficarmos atentos a isso. Já usuários mais experientes podem tentar usar mecanismos de SQL Injection (BOX 1), por exemplo, para ocasionar danos ao sistema.

BOX 1. SQL Injection

A Injeção de SQL, mais conhecida através do termo em inglês SQL Injection, é um tipo de ameaça de segurança que se aproveita de falhas em sistemas que interagem com bases de dados via SQL. A injeção de SQL ocorre quando o atacante consegue inserir uma série de instruções SQL dentro de uma consulta (query) através da manipulação das entradas de dados de uma aplicação.

Sempre devemos tentar prever os possíveis erros que poderão ser cometidos pelos usuários e preparar o sistema para que este possa se comportar de forma a evitar danos ao seu funcionamento, fazendo o tratamento de forma adequada, impedindo a entrada dos dados não desejados e orientando o usuário a tomar a ação correta ao submeter os dados no formulário.

Existem algumas formas de prevenir os erros, usando máscaras para delimitar o formato do campo, ou labels indicando o que o campo espera. Ainda que esta segunda opção não restrinja a inserção de valores no formato esperado, ela é importante para manter o usuário informado sobre o tipo de informação que está sendo requisitado em determinado campo, evitando a ocorrência de erros não intencionais.

Existem alguns campos que geralmente não são validados, por não serem considerados de preenchimento obrigatório, ou por não serem utilizados com frequência. Esses campos podem se mostrar uma brecha na segurança do site, portanto, a eles precisa ser dada a devida atenção no momento de planejar a sua validação. Um bom exemplo são campos de observação, que a princípio não são obrigatórios e frequentemente não é feito nenhum tipo de verificação neles, abrindo espaço para que sejam utilizados, por exemplo, para ataques XSS, injetando scripts na sua aplicação e prejudicando-a.

Por isso devemos planejar bem os tipos de informações que serão expostas antes de iniciar a validação. Por exemplo, é importante que campos numéricos sejam delimitados, evitando tanto a quebra de regras de negócio quanto a ultrapassagem dos limites aceitos pela base de dados. Em alguns campos de texto os caracteres especiais também devem ser negados, evitando a inserção de dados maliciosos e informações inconsistentes para o fim a que se destinam.

Normalmente, essas validações são definidas no lado cliente e no lado do servidor, onde nos clientes estas validações fazem uso do JavaScript, e no servidor estas validações são feitas utilizando a linguagem de programação C#. Com frequência são utilizados os dois modos de validação, pois cada um tem as suas vantagens e desvantagens:

A validação no lado do cliente é mais rápida, pois não necessita ter o trabalho de ir ao servidor tratar a as informações e retornar a página ao usuário, tudo é feito na máquina do próprio cliente. Porém existem ...

Quer ler esse conteúdo completo? Tenha acesso completo