Formularios
Recibir datos del usuario sin confiar nunca en ellos.
Formularios y validación
Un formulario es el punto en el que una aplicación deja de tener el control. Todo lo que llega por un POST es una cadena de caracteres producida por otra persona: un usuario con prisas, un navegador que rellena automáticamente un campo, un script que se salta la página. El campo «año de publicación» puede contener 1985, mil novecientos, un valor vacío o trescientos caracteres.
La cuestión, por tanto, no es saber si los datos serán inválidos, sino dónde decide la aplicación comprobarlo. El reflejo natural —verificar al principio del método del controlador— produce un código que apila if, mezcla reglas de negocio con fontanería web y duplica las mismas comprobaciones en cada punto en el que se recibe el objeto. Tras unas cuantas pantallas, dos formularios que manejan el mismo objeto dejan de validarlo de la misma manera.
El otro reflejo —confiar en la validación del navegador, required y type="number"— es cómodo y falso. Estos atributos mejoran la experiencia, pero no protegen nada: se evalúan en el cliente, que puede desactivarlos, y un curl bien formado los ignora por completo. Una validación en el cliente es una comodidad; una validación en el servidor es una garantía.
Comentarios
Los comentarios funcionan con GitHub Discussions
Inicia sesión con GitHub para participar en la discusión