[java] HttpServletRequest - كيفية الحصول على عنوان URL للإحالة؟



1 Answers

في الواقع: request.getHeader("Referer") ، أو حتى أفضل ، ولكي تكون متأكدًا بنسبة 100٪ ، request.getHeader(HttpHeaders.REFERER) ، حيث يكون HttpHeaders هو com.google.common.net.HttpHeaders

Question

أحتاج إلى تسجيل عناوين URL التي ترتبط بموقعي في Java Servlet.




كما ذكر الجميع أنها

request.getHeader("referer");

أرغب في إضافة بعض التفاصيل الإضافية حول جانب الأمان لرأس الإحالة على النقيض من الإجابة المقبولة. في ورقة الغش في مشروع Open Web Security Application ( OWASP ) ، ضمن ورقة الغش للوقاية من طلب التخصيص عبر المواقع (CSRF) ، فإنه يشير إلى أهمية رأس الصفحة المرجعية .

الأهم من ذلك بالنسبة إلى هذا الاختيار الموصى به من نفس المنشأ ، لا يمكن أن يتم تعيين عدد من رؤوس طلبات HTTP بواسطة جافا سكريبت لأنهم في قائمة العناوين "ممنوع". يمكن للمتصفحات نفسها فقط تعيين قيم لهذه الرؤوس ، مما يجعلها أكثر جدارة بالثقة لأنه حتى لا يمكن استخدام ثغرة XSS لتعديلها.

يعتمد التحقق من مصدر المصدر الموصى به هنا على ثلاثة من هذه الرؤوس المحمية: Origin و Referer و Host ، مما يجعله دفاعًا قويًا CSRF قويًا من تلقاء نفسه.

يمكنك الرجوع إلى قائمة العناوين المحظورة هنا . يمتلك وكيل المستخدم (أي: المتصفح) التحكم الكامل في هذه الرؤوس وليس المستخدم.




Related