Warum generiert Express / Connect bei jeder Anforderung ein neues CSRF-Token?

Soweit ich weiß, gibt es zwei Ansätze zum Schutz vor CSRF-Angriffen: 1)Token pro Sitzung, und 2)Token pro Anfrage

1) Im ersten Fall wird das CSRF-Token nur einmal generiert, wenn die Sitzung des Benutzers initialisiert wird. Es gibt also nur ein gültiges Token für den Benutzer auf einmal.

2) Im zweiten Fall wird bei jeder Anforderung ein neues CSRF-Token generiert, und danach wird ein altes ungültig. Es ist schwieriger, die Verwundbarkeit auszunutzen, da der Angreifer selbst dann einen Token stiehlt (über XSS).Es läuft ab, wenn der Benutzer zur nächsten Seite wechselt. Auf der anderen Seite macht dieser Ansatz die Web-App weniger benutzbar. Hier ist ein gutes Zitat aussecurity.stackexchange.com:

Wenn sie beispielsweise auf die Schaltfläche "Zurück" klicken und das Formular mit neuen Werten senden, schlägt die Übermittlung fehl und sie werden wahrscheinlich mit einer feindlichen Fehlermeldung begrüßt. Wenn sie versuchen, eine Ressource in einem zweiten Tab zu öffnen, werden sie feststellen, dass die Sitzung in einem oder beiden Tabs zufällig unterbrochen wird

Bei der Analyse von Node.jsausdrücken Framework (welches aufVerbinden) Ich habe festgestellt, dass bei jeder Anforderung ein neues CSRF-Token generiert wird.aber ein alter wird nicht ungültig.

Meine Frage ist: Was ist der Grund, bei jeder Anforderung ein neues CSRF-Token bereitzustellen und kein altes ungültig zu machen? Warum nicht einfach ein einzelnes Token pro Sitzung generieren?

Danke und Entschuldigung für mein Englisch!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage