Hallo,
Ich bin auf einen „csrf_detected“-Fehler gestoßen, als ich das Plugin oauth2-basic verwendet habe, um mich über OAuth2 anzumelden. Hier ist der detaillierte Ablauf des Problems:
- Ich klicke auf „Anmelden“, was mich weiterleitet zu:
https://myforum/auth/basic_oauth2 - Es führt dann eine 302-Weiterleitung zu:
https://myforum/auth/failure?message=csrf_detected
Reproduktionsschritte:
Wenn ich versuche, mich anzumelden, simuliert der folgende curl-Befehl die Anfrage:
curl -vvvv 'https://myforum/auth/oauth2_basic' \
-H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7' \
-H 'accept-language: zh-CN,zh;q=0.9' \
-H 'cache-control: max-age=0' \
-H 'content-type: application/x-www-form-urlencoded' \
-H 'cookie: _forum_session=k9aHXc2cWsx%2FMBL26KTV33PSo8jC9Am47UBoT5Zq9qYAm2nKoU2BJkAR1bgc6U%2BYqsL3%2F3sjiYRmJoNr3JuvzkjdYl%2FjzT9djkq%2BYjSmN16EUEdZIdOl%2Fiv1MohQkthKSnOpUdXLTxHZBezxTg4O%2Bs6LUZ7HzCjpT3lxm24FS4xOPkU5QnSHBM%2F7GazZRhGywXsHKGdJ6fY0kVo%2BJHNNHBZu--qQKGn36Xh7jvKPEs--I1b3oz4nv2xe%2Fmi0bKPLog%3D%3D' \
-H 'origin: https://myforum' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36' \
--data-raw 'authenticity_token=doSNHEhj23HibAEZf0znqzevPNPq9Bub69Xnq18mKARw8GiGP-cokbg7k0qUvRgH3kayeJK7_-boeoOvX6GKqQ'
Das Ergebnis ist eine 302-Weiterleitung zur Fehlerseite mit der Meldung „csrf_detected“:
< HTTP/2 302
< location: /auth/failure?message=csrf_detected
Feststellungen:
- Wenn ich den
authenticity_token-Parameter weglasse, funktioniert der Anmeldevorgang korrekt und leitet mich wie erwartet zur OAuth2-Anmeldeseite weiter:
Frage:
Es scheint, dass das System, wenn die GET-Anfrage an /auth/oauth2_basic ein authenticity_token enthält, dieses prüft und den CSRF-Fehler auslöst, wenn das Token ungültig ist. Aber ich bin verwirrt – da ich noch nicht angemeldet bin, woher hätte ich zu diesem Zeitpunkt ein authenticity_token?
Ist dies ein erwartetes Verhalten, oder gibt es ein Problem mit der Handhabung des CSRF-Tokens im anfänglichen Anmeldevorgang?
Jede Hilfe oder Anleitung wäre willkommen!
Vielen Dank!