Cuando un sitio web almacena una cookie en tu navegador, no todas son iguales. Detrás de cada cookie existe una serie de atributos que determinan cómo se comporta, quién puede acceder a ella y en qué condiciones se envía. Entre los más importantes están HttpOnly y SameSite, dos mecanismos de seguridad que la mayoría de usuarios nunca ve, pero que marcan una gran diferencia en la protección de tu cuenta y tus datos.
¿Qué es una cookie HttpOnly?
El atributo HttpOnly indica al navegador que esa cookie no debe ser accesible mediante JavaScript. Esto significa que ningún código ejecutado en la página puede leer ni modificar esa cookie a través de document.cookie.
¿Por qué importa esto? Porque uno de los ataques más comunes en la web es el XSS (Cross-Site Scripting): un atacante inyecta código malicioso en una página y ese código roba las cookies de sesión del usuario. Si la cookie de sesión tiene el atributo HttpOnly, el script malicioso no puede leerla, aunque consiga ejecutarse.
Ejemplo práctico
Cuando inicias sesión en un banco o en tu correo electrónico, el servidor crea una cookie de sesión para identificarte. Si esa cookie es HttpOnly, incluso si un atacante logra inyectar JavaScript en la página, no podrá robar tu sesión. La cookie se envía automáticamente con cada petición HTTP, pero nunca queda expuesta al código JavaScript de la página.
Si tienes dudas sobre cómo gestiona tu navegador estas cookies, puedes revisar la configuración desde las guías para Chrome, Firefox o Microsoft Edge.
¿Qué es el atributo SameSite?
El atributo SameSite controla en qué condiciones el navegador envía una cookie en peticiones entre sitios distintos. Fue introducido para combatir los ataques CSRF (Cross-Site Request Forgery), que engañan a tu navegador para que realice acciones en otro sitio sin tu conocimiento.
Existen tres valores posibles:
SameSite=Strict
La cookie solo se envía si la petición se origina desde el mismo sitio. Si haces clic en un enlace externo que apunta a una web donde ya estás logado, el navegador no enviará esa cookie. Es el nivel de protección más alto, aunque puede resultar incómodo si el usuario llega desde un enlace externo y parece que no está autenticado.
SameSite=Lax (el más común)
La cookie se envía en navegación de nivel superior (por ejemplo, al hacer clic en un enlace), pero no en peticiones de recursos cruzados como imágenes, iframes o llamadas AJAX. Es el equilibrio entre usabilidad y seguridad que adopta la mayoría de navegadores modernos por defecto.
SameSite=None
La cookie se envía en todas las peticiones, independientemente del origen. Para usarlo, es obligatorio que la cookie también tenga el atributo Secure (es decir, solo se transmite por HTTPS). Este valor es necesario para ciertos casos legítimos, como widgets de terceros o sistemas de pago embebidos. Puedes aprender más sobre esto en la página de cookies de terceros.
¿Por qué los navegadores cambiaron el comportamiento por defecto?
Antes de 2020, si una cookie no especificaba SameSite, los navegadores la trataban como SameSite=None. Esto dejaba abierta la puerta a muchos ataques CSRF.
A partir de Chrome 80 y versiones equivalentes en Firefox y Edge, el comportamiento por defecto pasó a ser SameSite=Lax. Esto mejoró la seguridad de millones de sitios automáticamente, aunque también causó que algunos sistemas de autenticación de terceros dejaran de funcionar correctamente hasta que los desarrolladores actualizaron sus configuraciones.
Si usas Safari, ten en cuenta que su implementación de SameSite tiene algunas particularidades. Consulta la guía de cookies para Safari si tienes problemas con el inicio de sesión en sitios específicos.
¿Cómo sé si un sitio usa estas cookies correctamente?
Puedes inspeccionarlo fácilmente con las herramientas de desarrollo de tu navegador:
- Abre las herramientas de desarrollador (F12 en la mayoría de navegadores).
- Ve a la pestaña Application (Chrome/Edge) o Storage (Firefox).
- Selecciona Cookies en el panel izquierdo y elige el dominio.
- Verás una tabla con todas las cookies y sus atributos, incluyendo
HttpOnlyySameSite.
Si una cookie de sesión no tiene HttpOnly marcado, es señal de que el sitio podría ser vulnerable a XSS. Si no tiene SameSite configurado correctamente, podría ser susceptible a ataques CSRF.
Conclusión: pequeños atributos, gran impacto en la seguridad
HttpOnly y SameSite son dos líneas de defensa silenciosas que protegen tu sesión y tus datos sin que tengas que hacer nada. No son visibles en la interfaz del navegador, pero su presencia —o ausencia— puede determinar si tu cuenta es segura o vulnerable.
Si quieres entender mejor cómo funcionan las cookies en general, consulta nuestra información sobre cookies o explora por qué a veces los sitios te vuelven a pedir que las aceptes en este artículo.
Preguntas frecuentes
¿Una cookie HttpOnly es completamente segura?
Protege frente al robo por JavaScript, pero no ante otros vectores de ataque. Sigue siendo importante que las cookies de sesión también tengan Secure (solo HTTPS) y SameSite bien configurado.
¿Puedo activar o desactivar HttpOnly desde el navegador?
No. El atributo HttpOnly lo establece el servidor cuando crea la cookie. Como usuario, no puedes modificarlo desde la configuración del navegador.
¿SameSite=Lax me protege del todo contra CSRF?
En la mayoría de casos sí, especialmente para las acciones más críticas que suelen depender de navegación de nivel superior. Sin embargo, para protección completa, los desarrolladores deberían combinar SameSite=Strict con tokens CSRF en formularios sensibles.