Validaciones… ¿lado cliente o lado servidor?

Inicio / Buenas prácticas / Validaciones… ¿lado cliente o lado servidor?

La respuesta corta primero: las dos (y si sólo puedo elegir una, definitivamente del lado servidor).

Respuesta larga:

¿Por qué es más importante la validación del lado servidor que del lado cliente? Sencillamente porque tenés mucho más control sobre lo que sucede.

En una aplicación de escritorio (o digamos, una aplicación que no sea de tipo cliente-servidor) no existe este problema: la aplicación es una sola con lo cual, lo que el front-end captura puede ser considerado confiable y volver a realizar la validación en el backend resultaría redundante.

En cambio, en el entorno de una aplicación web (o una cliente-servidor), se trata realmente de dos aplicaciones independientes.

Pensá un momento en cómo es el modelo de ejecución de una aplicación web:

  1. El cliente realiza un pedido
  2. El servidor responde (probablemente con HTML y JavaScript)
  3. El cliente dibuja la página
  4. El usuario completa los datos
  5. El cliente realiza un nuevo pedido enviando los datos ingresados
  6. El servidor los procesa y eventualmente almacena
  7. El servidor responde
  8. El cliente interpreta la respuesta y dibuja la página

Desde el punto de vista del servidor, el pedido que se le realiza puede haber sido generado usando el HTML que él mismo ha enviado o no… imposible saberlo.

De modo que, en definitiva, los datos recibidos no pueden ser considerados confiables. Podés ver cómo “fabricar” un pedido cualquiera usando una herramienta como cURL.

Tomemos un sitio cualquiera como http://www.recruitersonline.com/members/ron4_add.php:

Si vemos el código fuente:

Podemos notar rápidamente que los datos que se introduzcan en este formulario serán enviados a ron4_add_thanks.php.

Valiéndonos de cURL podemos armar un pedido como:

Esto haría que el servidor reciba XXXX como valor del campo adm_first_name. Suponiendo que tal valor no sea aceptable y que la validación sólo se realizara a través de JavaScript… habríamos logrado saltearnos esta validación (Todo lo que hicimos fue hacer un pedido al mismo servidor a través de un cliente diferente).

De hecho, en este tipo de problemas se basan los ataques tales como sql injection.

Bueno pero entonces… ¿vale la pena hacer validaciones del lado cliente? La respuesta es un rotundo ¡SI!.

Las validaciones del lado del cliente son un favor que le hacemos a los usuarios bien intencionados que simplemente han cometido un error al ingresar información de buena fé.

El favor consiste en ahorrarles el round-trip al servidor con información que sabemos de antemano que será rechazada. Es cierto que hoy en día el tiempo de ida y vuelta se ha reducido en forma significativa, sin embargo, aún hay escenarios en los que puede hacer una diferencia (Por ejemplo en el caso de aplicaciones móviles donde la red es inestable o peor, se consumen datos del plan).

En conclusión: la validación del lado servidor es una necesidad mientras que la validación del lado cliente es una comodidad.

mchojrin

CEO at Leeway
Mauro es Lic. en Ciencias de la Computación.
Su carrera como docente de programación se inició en el año 1997 en la Escuela Técnica ORT.
Actualmente coordina el desarrollo de proyectos web en Leeway y los cursos dictados en la Leeway Academy

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *