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
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: "/",
});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.
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 gratisGuías relacionadas
Content-Security-Policy (CSP): qué es y cómo agregarla
El encabezado que impide que se ejecuten scripts inyectados.
CORS mal configurado: las trampas del comodín y del reflejo
Permite todos los orígenes y cualquier sitio podrá leer tu API.
Por qué tu sitio necesita una redirección de HTTP a HTTPS
No dejes abierta la puerta insegura.