Todas las guías
Severidad AltaSeguridad de cookies

Las marcas de cookies Secure, HttpOnly y SameSite

Las cookies de sesión son un objetivo principal. Tres atributos — Secure, HttpOnly y SameSite — determinan si un atacante puede robarlas o abusar de ellas. Su ausencia lleva directamente al secuestro de sesiones y a CSRF.

Qué es

Secure envía la cookie solo por HTTPS. HttpOnly la oculta de JavaScript (document.cookie). SameSite controla si se envía en solicitudes entre sitios.

Juntas reducen la superficie de ataque: un atacante no puede leer la cookie con un script inyectado, no puede capturarla por HTTP y no puede aprovecharla desde otro sitio.

Por qué importa

Sin HttpOnly, cualquier bug de XSS puede leer la cookie de sesión y entregarle al atacante una sesión iniciada. Sin Secure, la cookie se filtra en cualquier solicitud HTTP plana.

Sin SameSite, el navegador adjunta la cookie a las solicitudes entre sitios, que es el mecanismo del que dependen los ataques CSRF.

Cómo solucionarlo

Define las tres en las cookies de sesión

La mayoría de los frameworks las exponen como opciones al crear la cookie.

res.cookie("session", token, {
  secure: true,
  httpOnly: true,
  sameSite: "lax", // or "strict" for maximum protection
  path: "/",
});
Usa prefijos en el nombre de la cookie

Nombrar una cookie __Host- obliga al navegador a exigir Secure, Path=/ y sin Domain: una base sólida y autoaplicada para las cookies de sesión.

Recuerda que SameSite=None necesita Secure

Si de verdad necesitas cookies entre sitios, SameSite=None solo se respeta cuando Secure también está definido; de lo contrario, los navegadores modernos descartan la cookie.

Preguntas frecuentes

¿Lax o Strict para SameSite?

Lax es un valor predeterminado seguro que aún permite las navegaciones de nivel superior. Strict es más estricto, pero puede romper flujos donde los usuarios llegan desde enlaces externos esperando tener la sesión iniciada.

¿Estas marcas detienen el XSS?

HttpOnly limita el daño del XSS al ocultar la cookie, pero no lo previene. Combínala con una Content-Security-Policy sólida.

¿Tu app está afectada?

AppSafe verifica este y docenas de problemas más en un solo escaneo gratis.

Escanear mi app gratis