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.
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. |
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.
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
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.
En un servidor HTTP, puedes configurar cookies con la propiedad SameSite
:
res.cookie('sessionId', 'abc123', { sameSite: 'Strict' });
setcookie('sessionId', 'abc123', [
'SameSite' => 'Strict',
'Secure' => true,
'HttpOnly' => true
]);
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.
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
.
SameSite=Strict
para cookies sensibles como sesiones de usuario, siempre que no se requiera compartir entre sitios.
SameSite=Lax
para cookies que necesitan ser accesibles en navegación directa, pero no desde peticiones complejas.
SameSite=None
solo si realmente necesitas enviar cookies entre sitios, asegurándote de configurarlas como seguras (Secure
).
Jorge García
Fullstack developer