Considere la protección CSRF estándar de una aplicación Ruby on Rails: un token CSRF está incrustado en la página HTML, mientras que al mismo tiempo se almacena cifrado como parte de la cookie de sesión. Al realizar una solicitud, el token incorporado se envía a lo largo de la cookie y el servidor puede verificar si coinciden.
Supongamos ahora que se abre la misma aplicación en dos pestañas separadas del navegador. Tendrán diferentes tokens CSRF y, como tales, diferentes cookies de sesión. Sin embargo, cuando hago solicitudes de publicación, no hay problemas de CSRF.
Esto plantea la pregunta: ¿cuál es el alcance de una cookie del navegador? Si el alcance fuera global (es decir, válido en diferentes pestañas del navegador), tan pronto como abrí la segunda pestaña, la primera cookie de sesión se habría sobrescrito (ya que provienen del mismo origen y tienen la misma clave). Pero puedo hacer solicitudes POST desde la primera pestaña, y no fallan, lo que implica que cada pestaña tiene su propio conjunto de cookies.
Por otra parte, si inicio sesión en una pestaña y abro una segunda, obviamente también tengo una sesión de aplicación en la segunda pestaña, lo que implica que las cookies se comparten en las pestañas del navegador.
Entonces, ¿cuál es el verdadero "alcance" de una cookie del navegador?