¿Cuál es el "alcance de validez" de una cookie del navegador?

1

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?

    
pregunta daniel f. 12.07.2018 - 14:34
fuente

1 respuesta

3
  

... dos pestañas separadas del navegador. Tendrán diferentes tokens CSRF y, como tales, diferentes cookies de sesión.

No lo hacen.
La misma cookie se usa cuando accede al mismo sitio dentro del mismo navegador, es decir, el alcance de la cookie no es la pestaña actual, sino el navegador actual.

Por eso, por lo general, también es imposible iniciar sesión en el mismo sitio con el mismo navegador al mismo tiempo. Existen extensiones de navegador para limitar el alcance de la cookie a la pestaña actual con el fin de hacer posible el inicio de sesión múltiple, pero de forma predeterminada el alcance es el navegador actual.

Para ser más precisos: si cambia a un navegador diferente, tendrá un contexto diferente para las cookies. Si cambia a un perfil de navegador diferente, también obtendrá un contexto diferente. Lo mismo cuando se cambia al modo privado. Pero si cambias solo a una pestaña o ventana diferente, entonces tienes el mismo contexto.

Tenga en cuenta que una ruta podría estar restringida adicionalmente por la ruta en el sitio usando un argumento path y también podría incluir subdominios que usan el argumento domain . Consulte la sección "Alcance de las cookies" en MDN: cookies HTTP para obtener más detalles.

    
respondido por el Steffen Ullrich 12.07.2018 - 14:55
fuente

Lea otras preguntas en las etiquetas