Formulários
Receber dados do usuário sem nunca confiar neles.
Formulários e validação
Um formulário é o ponto em que uma aplicação deixa de estar no controle. Tudo o que chega por um POST é uma string produzida por outra pessoa: um usuário apressado, um navegador que preenche um campo automaticamente, um script que contorna a página. O campo “ano de publicação” pode conter 1985, mil novecentos, um valor vazio ou trezentos caracteres.
A questão, portanto, não é saber se os dados serão inválidos, mas onde a aplicação decide constatar isso. O reflexo natural — verificar no início do método do controller — produz um código que empilha ifs, mistura regras de negócio com infraestrutura web e duplica as mesmas verificações em cada ponto onde o objeto é recebido. Depois de algumas telas, dois formulários que manipulam o mesmo objeto deixam de validá-lo da mesma maneira.
O outro reflexo — confiar na validação do navegador, com required e type="number" — é confortável e errado. Esses atributos melhoram a experiência, mas não protegem nada: são avaliados no cliente, que pode desativá-los, e um curl bem formado os ignora por completo. Uma validação no lado do cliente é uma comodidade; uma validação no lado do servidor é uma garantia.
Comentários
Os comentários são alimentados pelo GitHub Discussions
Conecte-se com o GitHub para participar da discussão