¿Cómo funciona la protección CSRF de Ruby on Rails?

2

No estoy seguro de entender completamente cómo Ruby on Rails maneja la protección CSRF.

Mi entendimiento fue que se genera un token y se incrusta en el marcado HTML como una etiqueta meta, y al mismo tiempo se cifra en la cookie de sesión. Al realizar una solicitud POST, tanto el valor de la etiqueta como la cookie se envían al servidor, lo que descifra la cookie y compara los tokens CSRF. En caso de discrepancia, la protección CSRF rechazará la solicitud.

Sin embargo, no estoy seguro de entender cómo funciona cuando se abren varias ventanas del navegador.

Considere el siguiente escenario: abro dos páginas diferentes de mi aplicación en dos pestañas separadas. Tienen dos tokens CSRF diferentes y las cookies de sesión difieren entre sí. Al abrir la segunda pestaña, la cookie de sesión establecida con la primera pestaña se sobrescribe. Hubiera esperado que una solicitud POST en la primera pestaña fallaría, ya que la cookie de sesión ahora contiene el valor del token CSRF cifrado de la segunda pestaña.

En cambio, la solicitud pasa normalmente, la aplicación no genera ningún error. Entonces, ¿dónde estoy malinterpretando cómo funciona la protección CSRF de Rails?

    
pregunta daniel f. 12.07.2018 - 16:24
fuente

0 respuestas

Lea otras preguntas en las etiquetas