MELHOR FORMA DE VALIDA?ÃO ASP.NET

DS2T 09/10/2015 03:18:07
#452350
Boa noite!

Estou aprendendo ASP.NET.
Sobre a validação de dados, eu conheço dois métodos:

O primeiro é validando no lado do cliente, com Javascript ou JQuery.
O segundo é validando pelo servidor, com os controles de Validação (RequiredFieldValidator, etc)

Pelo que tenho ouvido falar, o melhor é fazer o máximo de operações no lado do cliente. Então a primeira opção seria a melhor.
Seria isso mesmo?

Mas como eu faria a troca de informações com o servidor? Exemplo: Criei uma função simples pra validar em Javascript e coloquei no OnClick do botão. Só que, se não validar, eu não quero que o código asp do meu botão rode. Teria alguma propriedade compartilhada pra isso? Para verificar se a função javascript retornou True ou False para eu estar colocando como condicional sobre o codebehind do meu botão?

Obrigado a todos!
MESTRE 09/10/2015 07:22:36
#452351
Olha cara vou dar minha opnião sobre isso

Caso não seja localhost acho que vale a pena a validação tanto na View (em JavaScript) como na Controller (caso estiver desenvolvendo em MVC)..

Porém dependendo da [Ô]validação[Ô] pode ser uma regra de negócio e ela deverá permanecer na Model e não na Controller, agora se for uma validação por ex:
que checa se o campo é nulo ou foi digitado então você faz na view e na controller (caso seja online)..

Acredito que fazendo isso sua aplicação ficará mais segura.
OCELOT 09/10/2015 08:34:09
#452356
Resposta escolhida
Regra básica não apenas para desenvolvimento web, mas para qualquer programa em que se tenha cliente/servidor:

Nunca confie nos dados que o cliente te envia.

Não importa se você faz a validação no lado do cliente com javascript, você sempre deve fazer a validação do lado do servidor. Só a validação do lado do servidor vai garantir que os dados são realmente válidos.

A validação do lado do cliente se faz por questão de usabilidade, é mais conveniente para o usuário pois vai ser mais rápida a resposta, e também vai ajudar a diminuir requisições com dados inválidos para o servidor, mas nunca se pode confiar apenas nesta validação, já que ela se aplica apenas a usuários legítimos.

Se você fizer apenas no lado do cliente o que pode acontecer é um usuário mal intencionado desativar a sua validação ou até mesmo fazer um post direto para o seu servidor e enviar os dados que ele quiser.
KERPLUNK 10/10/2015 00:20:43
#452399
é como o OCELOT disse, a validação deve ser feita tanto no client quanto no servidor. Existem muitos casos em que a validação também depende de dados do servidor, e para isso, existem várias maneiras. Por exemplo, um campo de código que você precisa conferir no banco de dados o código digitado. Nesses casos, como uso sempre WebAPI, faço uma simples chamada AJAX e confiro os dados no cliente. Ao enviar o form, novamente a validação, dessa vez de todos os campos e valores enviados, incluindo para [Ô]limpeza[Ô] de engraçadinhos mandando código HTML ou tentativas de SQL injection, que são prontamente logadas, incluindo o IP do client e, se disponível, o login do usuário.
Não querer que o ASP renderize caso a validação não esteja ok, é impossível quando seu form envolve o postback para gravação dos dados. E esse é o seu primeiro caso que avisei que aconteceria de que controlar a ação dos controles runat=server, é muito, mas muito mais difícil do que escrever um HTML simples que integre com uma WebAPI.
Tópico encerrado , respostas não são mais permitidas