Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Duvida sobre validação no Angular 2

Quando fazemos a validação pelo angular, devemos fazer no backend também? Minha duvida é se é possível burlar a validação do formulário em angular 2 assim como é possível em um formulário com um simples javascript.

4 respostas
solução!

Validar dados sendo enviados pelo usuário só no javascript não é o suficiente por causa de:

*Se o usuário desativar o javascript, você pode acabar com dados inválidos no servidor

*Se o usuário for malicioso, pode mandar dados inválidos para o servidor

*No caso de um ataque MITM, a validação no servidor seria um dificultador a mais

*Validações no servidor fazem um site menos suscetível a robôs maliciosos

Em resumo... vale a pena precaver contra todos esses agentes desconhecidos, fazendo a validação no servidor (que é o agente mais confiável) como sendo a principal... e no javascript, como sendo um agilizador de validação, por não necessitar de ir no servidor.

Nota: apesar de ter mencionado várias formas de ataques que podem ocorrer, não significa que somente a validação no servidor vá resolver tudo. Outras medidas são necessárias contra um Man In The Middle por exemplo, como usar certificado SSL para o seu domínio, entre outras.

Wellington, não deixe de marcar a resposta da Amanda como solução, blz?

Em suma, você deve ter a validação no cliente e no backend. No cliente para melhorar a experiência do usuário já indicando que algo esta errado antes de gerar a requisição e no backend para garantir que independente do cliente utilizado (SPA , Android, ios, etc) a validação seja sempre executada.

Ah wellington, essa prática de validação do back não é exclusiva do Angular! Aplicações web tradiciobais também!

Vai uma dica: se você esta começando a criar aplicações web começando primeiro por SPA não faça isso. SPA são mais complexas e requerem que o desenvolvedor resolva uma série de questões que já são resolvidas por padrão em uma aplicação web tradicional. A escolha de uma SPA é uma escolha arquitetural e se você optou por optar pode comprometer seu entendimento de web como um todo.

Se você já tem experiência em criar aplicações web, não há problema algum e ignore o que eu disse.

Talvez esse podcast possa ampliar a questão:

http://hipsters.tech/single-page-applications-hipsters-16/

Amanda e Flavio, obrigado pelos esclarecimentos.

Apesar de saber que o Angular é em javascript que roda no client, eu achei que ele tivesse alguma verificação com o codigo que esta no servidor, detectando quando há alguma alteração intermediaria no script.

(programador preguiçoso falando...) seria muito legal se desse para escrever a validação apenas uma vez, tentei fazer isso usando o nodejs, reaproveitando o mesmo código do cliente no servidor.

Acho que vi algo do tipo com o meteorjs.