Wie verhindert die Verwendung des Synchronizer-Token-Musters, dass CSRF sicher ist?
Ich habe darüber nachgelesen, ein Synchronizer-Token-Muster zu verwenden, um CSRF (CSRF = Cross-Site Request Forgery) zu verhindern, und verstehe nicht, wie es tatsächlich sicher ist.
Nehmen wir an, ich habe eine gefälschte Bankseite fakebank.com mit zwei URLs:
fakebank.com/withdrawForm.html
- eine GET-Anfrage, die das Abhebungsformular anzeigtfakebank.com/doWithdraw
- POST auf diese URL, um die Auszahlung vorzunehmenMein Verständnis der Sicherheitslücke ist dasmaliciousSite.com
kann eine POST-Anfrage an fälschenfakebank.com/doWithdraw
, und wenn Sie gerade bei fakebank angemeldet sind, ist der POST erfolgreich.
Angenommen, wir implementieren ein Synchronizer-Token-Muster, in das ein Geheimcode eingebettet wirdfakebank.com/withdrawForm.html
. KippenmaliciousSite.com
Man muss nur eine GET-Anfrage für dieses Formular fälschen, das HTML-Ergebnis analysieren, das Token abrufen und dann die POST-Anfrage mit diesem Token erstellen.
Dies setzt voraus, dass fakebank.com den HTTP Referrer oder Origin oder nicht überprüftmaliciousSite.com
fälscht erfolgreich, dass der Referrer / Origin fakebank.com ist.