مرحباً،
لقد واجهت خطأ “csrf_detected” أثناء استخدام المكون الإضافي oauth2-basic لتسجيل الدخول عبر OAuth2. فيما يلي التدفق التفصيلي للمشكلة:
- أنقر على “تسجيل الدخول”، مما يعيد توجيهي إلى:
https://myforum/auth/basic_oauth2 - ثم يقوم بإعادة توجيه 302 إلى:
https://myforum/auth/failure?message=csrf_detected
خطوات إعادة الإنتاج:
عند محاولة تسجيل الدخول، يحاكي أمر curl التالي الطلب:
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'
النتيجة هي إعادة توجيه 302 إلى صفحة الفشل مع الرسالة “csrf_detected”:
< HTTP/2 302
< location: /auth/failure?message=csrf_detected
النتائج:
- إذا حذفت المعلمة
authenticity_token، فإن تدفق تسجيل الدخول يعمل بشكل صحيح، ويعيد توجيهي إلى صفحة تسجيل الدخول OAuth2 كما هو متوقع:
سؤال:
يبدو أنه عندما يتضمن طلب GET إلى /auth/oauth2_basic رمز authenticity_token، يقوم النظام بالتحقق منه ويصدر خطأ CSRF إذا كان الرمز غير صالح. لكنني مرتبك - بما أنني لم أسجل الدخول بعد، كيف يمكن أن يكون لدي authenticity_token في هذه المرحلة؟
هل هذا سلوك متوقع، أم أن هناك مشكلة في كيفية التعامل مع رمز CSRF في عملية تسجيل الدخول الأولية؟
أي مساعدة أو توجيه سيكون موضع تقدير!
شكرا لك!