Según tengo entendido, hay dos enfoques para realizar la protección CSRF:
1) Token CSRF por sesión: el token se genera una vez por sesión. Esta es la forma más fácil;
2) token CSRF por solicitud: el nuevo token se genera en cada solicitud y el anterior se vuelve inválido. Esto es más seguro, pero la aplicación web puede romperse al presionar y hacer clic en el botón "atrás" en el navegador .
Hace unos días comencé a analizar cómo el marco de Node.js Connect implementa la protección CSRF y noté que utiliza el tercer enfoque:
Se genera un nuevo token CSRF en cada solicitud, pero el anterior no se vuelve válido . Así que hay varios tokens CSRF válidos para el usuario a la vez.
Mi pregunta es : ¿cuáles son las ventajas de los múltiples válidos tokens CSRF?
Muchas gracias.
P.S. No soy muy fuerte en inglés, así que explícalo de la manera más sencilla posible. Gracias de nuevo
EDITAR (reformulando mi pregunta):
El principal beneficio de generar un nuevo token en cada solicitud (y hacer que un antiguo sea inválido) es que el token se convierte en corto plazo e incluso si el atacante roba el token, caducará muy rápido. Pero con Connect un token antiguo no caduca, lo que hace que este enfoque sea el mismo que usar un solo token por sesión.
Entonces, ¿por qué los desarrolladores de Connect decidieron generar un token nuevo en cada solicitud? ¿Me estoy perdiendo algo?