Cookies Sin Atributo SameSite
Cookies sin el atributo SameSite (o configuradas como None sin Secure), habilitando cross-site request forgery al permitir que las cookies se envíen con requests de origen cruzado.
Cómo Funciona
Por defecto, las cookies se envían con cada request a tu dominio, incluyendo requests disparados desde otros sitios. SameSite=Lax previene que las cookies se envíen en requests POST de origen cruzado (el vector CSRF más común) mientras permite la navegación normal. Sin él, CSRF es trivialmente posible.
// MAL: sin SameSite — cookie enviada en todos los requests de origen cruzado
res.setHeader('Set-Cookie', `session=${token}; HttpOnly; Secure; Path=/`);// BIEN: SameSite=Lax es un buen default
res.setHeader(
'Set-Cookie',
`session=${token}; HttpOnly; Secure; Path=/; SameSite=Lax`
);Ejemplo Real
Antes de que los navegadores tomaran SameSite=Lax como default en 2020, CSRF era trivialmente fácil. Muchas apps viejas aún configuran SameSite=None explícitamente (para contextos third-party) sin entender el riesgo de CSRF que están re-habilitando.
Cómo Prevenirlo
- Usa SameSite=Lax como tu default — protege contra CSRF mientras permite la navegación normal
- Usa SameSite=Strict para las cookies más sensibles (sesiones de admin)
- Solo usa SameSite=None si genuinamente necesitas la cookie en un iframe cross-site, y siempre combínalo con Secure
- Los navegadores modernos defaultean a Lax, pero configúralo explícitamente para cubrir navegadores más viejos
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Falta el Header Content-Security-Policy
mediumEl header Content-Security-Policy (CSP) está ausente, dejando a los navegadores sin instrucciones sobre qué fuentes de scripts, estilos y recursos confiar.
Falta el Header X-Frame-Options
mediumEl header X-Frame-Options está ausente, permitiendo a atacantes embeber tu app en un iframe invisible y engañar usuarios para que hagan clic en tus elementos de UI (clickjacking).
Falta el Header X-Content-Type-Options
lowEl header X-Content-Type-Options: nosniff está ausente, permitiendo que los navegadores adivinen el tipo de contenido de una respuesta y potencialmente ejecuten contenido como script.
Falta HTTP Strict Transport Security (HSTS)
mediumEl header Strict-Transport-Security está ausente, permitiendo a los navegadores conectarse por HTTP plano y habilitando ataques de downgrade donde un atacante intercepta tráfico no cifrado.