Client-side y server-side: ¿cómo validar el envío de información?

Las aplicaciones web funcionan sobre un esquema cliente-servidor. En este tipo de interacción, el usuario (cliente) realiza peticiones a un programa remoto (servidor), quien le devolverá a cambio una respuesta.

La información que se intercambia en esa comunicación puede ser procesada mayormente por el cliente (en el caso de una aplicación web, el browser) o bien por el servidor remoto. Estas modalidades se conocen como client-side y server-side. Los lenguajes de programación web deben necesariamente encuadrarse en uno de los dos esquemas. Por ejemplo, JavaScript y ActionScript son lenguajes de scripting client-side, mientras que PHP y ASP.NET son server-side. Las aplicaciones desarrolladas con lenguajes de programación server-side necesitan el montaje de un servidor web para funcionar.

Algunos componentes, como formularios de contacto o de publicación de comentarios, requieren de un sistema que actúe de filtro para evitar el envío de texto no deseado, como mensajes de spam, datos inválidos o código malicioso. Esta validación puede realizarse tanto por lenguajes client-side como server-side, pero ¿cuál es el mejor tipo de filtro?

Client-side

Ventajas

  • Es más veloz, ya que no requiere de un permanente «ida y vuelta» con el servidor.
  • Por lo anterior, si el usuario ingresa información incorrecta el mensaje de error puede aparecer de manera inmediata (sin tener que recargar la página).

Desventajas

  • Es fácil de sobrepasar: el código en lenguaje de scripting puede ser leído e incluso deshabilitado desde cualquier browser.

Server-side

Ventajas

  • Es más seguro: el código no puede ser deshabilitado ni alterado con facilidad.

Desventajas

  • No permite informar al usuario de los errores de su formulario a medida que lo completa. El usuario puede tener que llenar el formulario varias veces hasta haber mitigado todos los posibles errores.

A diferencia de la validación server-side (que determina el verdadero nivel de protección del formulario), la validación client-side no es indispensable, pero mejora la experiencia de usuario. La mejor opción es combinar los dos enfoques.