Asegura cookies de respuesta HTTP

Posted on by

Las Cookies son un fragmento de la información intercambiada entre la página web y el navegador del usuario que permite recordar los datos de acceso del usuario al sitio web a través del protocolo HTTP.

Los principales objetivos de las cookies son, en primer lugar, la gestión de sesiones, en segundo lugar, las preferencias del usuario y por otro lado, el rastreo, almacenamiento y análisis del comportamiento de quien accede al sitio web.

Estas se envían con cada solicitud del navegador y hoy en día los navegadores como Chrome, Firefox y Edge ya han ajustado sus funcionalidades según las propuestas de IEFT para mejora de la seguridad de la información que gestionan las cookies en la navegación web.

A continuación la configuración para las respuestas de Cookies HTTP seguras y mitigar ataques.

Las cabeceras de respuesta HTTP se configuran con la directiva Set-Cookie y solamente se deberían enviar al servidor en peticiones cifradas mediante el protocolo HTTPS y nunca almacenar información sensible.

Sintaxis general para configuración en Apache

Set-Cookie: =< cookie-value>
Set-Cookie: =< cookie-value>; Expires=< date>
Set-Cookie: =< cookie-value>; Max-Age=< non-zero-digit>
Set-Cookie: =< cookie-value>; Domain=< domain-value>
Set-Cookie: =< cookie-value>; Path=< path-value>

Podemos indicar estas repuestas por cookie o utilizar una variable general para incluir a todas las cookies de nuestro sitio, como por ejemplo:

Set-Cookie ^(.*)$ $1;

A partir de estas los parámetros se aplicarán a todas las cookies de nuestro sitio, por ejemplo:

Set-Cookie ^(.*)$ "$1; Domain=ericaaguado.es;

Existen diferentes mecanismos para modificar el contenido de una cookie para conseguir así información no autorizada, realizar robos de identidad o sesiones e incluso inyectar códigos maliciosos y modificar datos del sitio web. Entre ellos los más conocidos métodos son las técnicas de falsificación de peticiones o en inglés Cross Site Request Forgery (CSRF o XSRF) o las técnicas de inyección de código malicioso o en inglés Cross-site scripting (XSS).

2. Proteger Cookies contra XSS:

Para ello necesitamos añadir el parámetro de Cookie HttpOnly y así conseguimos evitar que códigos JavaScript accedan a las cookies, lo que mitigará los ataques contras scripts cross-site XSS.

Los parámetros a incluir son:

  • HttpOnly -> Impide acceder a la cookie a través del script y desde el lado del cliente, incluso si hay una vulnerabilidad que lo permita.
  • Secure -> Impide establecer cookies en peticiones inseguras, por lo que solamente se aceptarán por https.

Ejemplo de Sintaxi para Apache:

Header edit Set-Cookie ^(.*)$ $1; Domain=ericaaguado.es; HttpOnly; Secure;
Header always edit Set-Cookie ^(.*)$ $1; Domain=ericaaguado.es; HttpOnly; Secure;

3. Proteger Cookies contra CSRF:

Estos ataques aprovechan las cookies de inicio de sesión para falsificar las solicitudes entre sitios web, por lo que podemos controlar desde donde se permiten estas solicitudes.

Los parámetros a incluir son:

  • SameSite = Strict -> Permite la navegación solamente cuando la cookie se envia desde el propio dominio o dominio original. Por lo que si se intenta acceder desde otro dominio a través de una url que redirige esta cookie quedará bloqueada.
  • SameSite = None -> Deshabilita la funcionalidad de protección por lo que se podrá realizar ataques de cross-site. Además se debe añadir el parámetro Secure ya que sino esta cookie será rechazada.
  • SameSite = Lax -> Permite el envío de cookies desde peticiones cross-site, como las peticiones a imágenes o frames, que redirijan desde la url del sitio a una url externa, por ejemplo siguiendo un enlace de login hacia otro sitio.

Ejemplo de Sintaxis para Apache:

Header edit Set-Cookie ^(.*)$ $1; Domain=ericaaguado.es; SameSite=strict;
Header always Set-Cookie ^(.*)$ $1; Domain=ericaaguado.es; SameSite=strict;

Existe una multitud de parámetros y variables que podemos configurar para centrar al máximo el control de nuestras cookies y así asegurar al máximo nuestro sitio contra este tipo de ataques. Podemos configurar estas directivas en la misma cabecera de respuesta apache dentro del mod_headers.so en el fichero de configuración de apache y luego reiniciar el servicio para aplicar los cambios.

4. Ejemplo para Apache:

Header edit Set-Cookie ^(.*)$ $1; Domain=ericaaguado.es; HttpOnly; Secure; SameSite=strict;


Por ahora no hay comentarios

Deja un comentario

Política de comentarios:
Responsable: Érica Aguado Expósito.
Finalidad: Gestionar los comentarios de este blog.
Legitimación: Su consentimiento.

Importante:
Su dirección de correo electrónico no será publicada.
Los campos obligatorios están marcados *.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.