CSRF verstehen

Ich verstehe nicht, wie die Verwendung eines "Challenge-Tokens" zu einer Prävention führen kann: Welcher Wert sollte mit welchem verglichen werden?

Von OWASP:

Im Allgemeinen müssen Entwickler dieses Token für die aktuelle Sitzung nur einmal generieren. Nach der ersten Erstellung dieses Tokens wird der Wert in der Sitzung gespeichert und für jede nachfolgende Anforderung verwendet, bis die Sitzung abläuft.

Wenn ich den Vorgang richtig verstehe, passiert Folgendes.

Ich melde mich anhttp: //example.co und es wird eine Sitzung / ein Cookie mit diesem zufälligen Token erstellt. Dann enthält jedes Formular eine versteckte Eingabe, die auch diesen zufälligen Wert aus der Sitzung enthält, der mit der Sitzung / dem Cookie beim Absenden des Formulars verglichen wird.

Aber was bringt das? Nehmen Sie nicht einfach Sitzungsdaten, fügen Sie sie in die Seite ein und vergleichen Sie sie dann mit denselben Sitzungsdaten? Scheint wie Zirkelschluss. In diesen Artikeln wird immer wieder über das Befolgen der "Same-Origin" -Richtlinie gesprochen, was jedoch keinen Sinn ergibt, da alle CSRF-Angriffe vom selben Ursprung sind wie der Benutze

Gibt es eine andere Alternative als das Anhängen des Tokens an jede einzelne URL als Abfragezeichenfolge? Scheint sehr hässlich und unpraktisch und erschwert dem Benutzer das Speichern von Lesezeichen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage