6 tips para mejorar la seguridad de tus formularios web

Date

Una de las principales consideraciones al momento de crear un sitio web es la seguridad de los formularios. Estos pueden convertirse en puntos de entrada sensibles hacia el sistema. Un formulario inseguro puede desde sobrecargar un servidor hasta acceder y modificar información almacenada en una base de datos. Acá listamos 6 pasos sencillos para asegurar que los formularios de un proyecto web están protegidos.

1. POST

Cualquier formulario debe siempre enviar la información de su contenido usando el método POST. Con POST los valores del formulario viajan ocultos hacia el script de destino. Si un formulario utiliza el método GET, toda la información del mismo será desplegada en la barra de direcciones del browser.

2. Token

Es necesario que el script que va a procesar la información del formulario tenga algún modo de reconocer que efectivamente la información proviene de el formulario para el cuál fue diseñado.  Para ello, normalmente se utiliza un token o código encriptado que se envía como un campo oculto en el formulario y que el script puede desencriptar para validar si procesa o rechaza el formulario.

La mayoría de los frameworks para desarrollo web, como CakePHP, ya integran el token como una validación automática en sus formularios.

3. Protección CSRF

CSRF significa Cross Site Request Forgery o Falsificación de Petición en Sitios Cruzados en español. Este tipo de vulnerabilidad trata de enviar datos de un formulario a un script ubicado en un sitio web distinto. Para evitar este ataque se debe chequear el sitio web del que proviene el formulario. Por ejemplo, en PHP se puede usar la variable $_SERVER[“HTTP_REFERER“] para validar desde dónde viene la información. No obstante, esta variable puede ser modificable o no provista, por lo cual una manera más confiable de validar que el formulario haya sido enviado desde el dominio correspondiente es utilizando Cookies.

4. Validaciones Javascript

Validar que los campos requeridos de un formulario se hayan completado y que tengan un formato y extensión apropiados mejora grandemente la experiencia del usuario y dificulta los posibles ataques. Se debe verificar que los campos del formulario permitan una cantidad razonable de caracteres y que respeten el formato pedido. Por ejemplo, usando Javascript, se puede limitar un campo para que solamente admita números.

Existen muchísimas librerías para javascript que permiten facilitar la validación de un formulario antes de su envío. Por ejemplo Jquery Validate es un plugin de la librería Jquery que permite realizar validaciones de campos numéricos e emails con un formato muy sencillo. Similarmente, Masket Input es otro plugin de Jquery que no solo restringe el tipo y número de caracteres admitidos en un input, si no que también les da formato conforme el usuario escribe.

5. Validaciones Internas

De cualquier forma, los navegadores permiten desactivar el Javascript, razón por la cuál se hace necesaria la validación de los campos y de su formato desde el script final. Esto es importante ya que los ataques maliciosos podrían intentar enviar código por un formulario, que al ser leído o desplegado podría ejecutarse y causar serios problemas. Este tipo de ataque es conocido como XSS o Cross Site Scripting. En PHP, por ejemplo, una simple línea de código permitiría filtar una entrada dependiendo de si queremos recibir texto o código html:

//suponiendo que $entrada guarda el valor enviado por el formulario //$entrada_txt almacenará una cadena de texto segura $entrada_txt = htmlentities(trim(strip_tags(stripslashes($entrada))), ENT_NOQUOTES, "UTF-8"); //en este caso $entrada_html almacenará una cadena con html $entrada_html = strip_tags(htmlentities(trim(stripslashes($entrada))), ENT_NOQUOTES, "UTF-8");

6. Captcha
recaptcha-example

Un captcha es una imagen distorcionada que contiene un código que el usuario debe leer e ingresar en un campo del formulario. La idea es que el hecho de ser una imagen y de que esté distorcionada evitará que códigos maliciosos puedan enviar ataques en el formulario.

Son pasos sencillos, validaciones simples que pueden llegar a ahorrarle dinero y muchos dolores de cabeza.

Conocer más
noticias

Skip to content