Si, por ejemplo, un paquete de terceros instalado emite una solicitud HTTP a sus servidores y, de forma predeterminada, cualquier solicitud HTTP sale con el contenido de las cookies en los encabezados de la solicitud, ¿no hace que el contenido se exponga al servidor que recibe el ¿solicitud? No entiendo cómo httpOnly evita que se revele el token de acceso...
El propósito del atributo httpOnly es ocultar la cookie del contexto de JavaScript.
Para observarlo, puede teclear document.cookie en la consola de cualquier página web, y notará que el resultado contiene todas las cookies que no son httpOnly y del dominio actual. Puede verificarlo con la pestaña Aplicación de DevTools.
Eso significa que si un atacante de alguna manera logra ejecutar un código malicioso en la página web de un usuario (por ejemplo, al explotar una vulnerabilidad de inyección de script), puede enviar solicitudes en nombre de ese usuario, pero no debería poder recuperar el valor de la cookie.
Las solicitudes HTTP solo llevan consigo cookies que son aplicables al dominio que se solicita, no todas las cookies del navegador. Si tiene un navegador con cookies para bank.com , shop.com y evil-site.com , una solicitud a evil-site.com solo enviaría cookies de evil-site.com con la solicitud. No tan útil
Ahora digamos que un script malicioso infectó bank.com y se colocó en una página de ese dominio. Ahora ese script se está ejecutando en el contexto de bank.com y el usuario que está viendo actualmente. Ahora puede leer las cookies que no son bank.com de bank.com usando document.cookie y enviarlas a evil-site.com con un simple script . Esto significa que si inició sesión en bank.com y vio esa página infectada, sus cookies de inicio de sesión ahora pueden ser robadas.
Marcar una cookie como HttpOnly le dice al navegador que no exponga la cookie a JavaScript, es decir, cualquier secuencia de comandos, legítima o no, no puede leer el valor de la cookie de document.cookie . Entonces, si bank.com hizo su cookie de inicio de sesión HttpOnly , esta cookie no sería legible por ningún script en la página. Sin embargo, la cookie aún se transmite entre el navegador y bank.com en solicitudes y respuestas mientras las cookies están presentes y son válidas.
HttpOnly es solo una de las muchas medidas para evitar el robo de cookies y debe complementarse con otras funciones de seguridad. Secure se asegura de que la cookie solo se envíe a través de conexiones HTTPS. SameSite define cuándo se permite que la cookie cruce sitios. Las conexiones HTTPS impiden leer la solicitud a través de la red.