Volver a la página principal
lunes 18 noviembre 2024
5

Para qué sirve la propiedad SameSite de una cookie

La propiedad SameSite de una cookie define cómo una cookie debe ser enviada junto con solicitudes originadas desde otros sitios. Es una característica de seguridad y privacidad que ayuda a mitigar riesgos asociados con ataques de Cross-Site Request Forgery (CSRF) y el rastreo no deseado de usuarios.

Valores de la propiedad SameSite

Valor Descripción
Strict La cookie solo se envía si la solicitud proviene del mismo sitio de donde se configuró la cookie.
Lax La cookie se envía para solicitudes "de nivel superior" (e.g., navegación directa o enlaces), pero no para peticiones realizadas por métodos como POST.
None La cookie se envía para todas las solicitudes, incluidas las de otros sitios. Requiere que la cookie tenga el atributo Secure configurado.

Propósito y uso

1. Mitigación de ataques CSRF

Los ataques CSRF ocurren cuando un atacante engaña a un usuario autenticado para que realice acciones no deseadas en un sitio web. La propiedad SameSite limita la forma en que las cookies se envían en solicitudes de terceros, reduciendo la probabilidad de este tipo de ataque.

Ejemplo: Configuración para evitar CSRF

Si configuras una cookie con SameSite=Strict, esta solo será enviada si la solicitud proviene del mismo sitio, bloqueando solicitudes maliciosas desde otros dominios.

Set-Cookie: sessionId=abc123; SameSite=Strict

2. Controlar el rastreo entre sitios

Con SameSite=Lax o SameSite=Strict, las cookies no se enviarán en ciertas solicitudes entre sitios, lo que ayuda a proteger la privacidad del usuario al dificultar el seguimiento no deseado.

Ejemplos prácticos

1. Configuración en un servidor

En un servidor HTTP, puedes configurar cookies con la propiedad SameSite:

En Node.js:

res.cookie('sessionId', 'abc123', { sameSite: 'Strict' });

En PHP:

setcookie('sessionId', 'abc123', [
    'SameSite' => 'Strict',
    'Secure' => true,
    'HttpOnly' => true
]);

2. Analizar cookies con SameSite en navegadores

Puedes verificar las cookies y sus configuraciones en las herramientas de desarrollo del navegador. En Google Chrome, esto se encuentra en la pestaña Aplicación > Almacenamiento > Cookies.

Consideraciones importantes

1. Compatibilidad: Algunos navegadores antiguos no soportan la propiedad SameSite. Asegúrate de verificar las versiones compatibles si necesitas un comportamiento predecible.

2. Uso de None: Si configuras SameSite=None, debes incluir también el atributo Secure, lo que requiere que la cookie sea enviada solo a través de HTTPS.

3. Cookies predeterminadas en navegadores modernos: Si no especificas SameSite, navegadores recientes como Google Chrome asumen el valor predeterminado Lax.

Recomendaciones de uso

  • Usa SameSite=Strict para cookies sensibles como sesiones de usuario, siempre que no se requiera compartir entre sitios.
  • Usa SameSite=Lax para cookies que necesitan ser accesibles en navegación directa, pero no desde peticiones complejas.
  • Usa SameSite=None solo si realmente necesitas enviar cookies entre sitios, asegurándote de configurarlas como seguras (Secure).

Referencias oficiales

Etiquetas:
desarrollo web
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer