كيفية حظر وصول المستخدم إلى صفحات السرفلت باستخدام HTTP_REFERER في Apache
مع ازدياد تطبيقات الويب، تزداد الحاجة إلى تأمين الصفحات الحساسة وحمايتها من الوصول غير المصرح به، خاصة من الروبوتات الآلية. إذا كنت في موقف يتطلب منك حظر المستخدمين من الوصول إلى صفحات السرفلت معينة مباشرة، لكنك تفتقر إلى القدرة على تعديل خادم التطبيق، فإن استخدام رأس HTTP_REFERER
في Apache يمكن أن يكون جزءًا من الحل الخاص بك.
في هذا المنشور، سوف نستعرض كيفية حظر الوصول بفعالية باستخدام HTTP_REFERER
في ملف .htaccess
الخاص بك، مع توضيح الخطوات وتقديم أمثلة واضحة لمساعدتك في تحقيق هدفك.
فهم HTTP_REFERER
HTTP_REFERER
هو رأس HTTP يحدد عنوان صفحة الويب التي قامت بربط المورد المطلوب. ببساطة، يخبر خادمك من أين جاء المستخدم قبل الوصول إلى صفحة معينة.
لماذا استخدام HTTP_REFERER لحظر الوصول؟
- تدبير أمني: على الرغم من أنه ليس مضمونا، إلا أنه يعمل كحاجز أولي ضد الوصول غير المصرح به.
- سهولة التنفيذ: إذا كان لديك السيطرة على الخادم الويب ولكن ليس منطق التطبيق، فإن هذا نهج عملي.
- منع الطلبات الآلية: حظر الطلبات المباشرة من مصادر خارجية أو روبوتات أمر ضروري إذا كنت ترغب في الحفاظ على نماذجك آمنة وعاملة فقط من خلال وسائل شرعية.
إعداد قواعد إعادة الكتابة في .htaccess
لتنفيذ الحظر بناءً على HTTP_REFERER
، ستحتاج إلى إضافة قواعد إلى ملف .htaccess
الخاص بك. إليك كيفية بناء قواعدك بفعالية.
قاعدة إعادة كتابة أساسية
يمكنك البدء بقانون بسيط مثل هذا:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://mywebaddress(.cl)?/.* [NC]
RewriteRule (servlet1|servlet2)/.+ - [F]
الشرح:
RewriteEngine on
: يتم تفعيل محرك إعادة الكتابة.RewriteCond
تتحقق مما إذا كانتHTTP_REFERER
لا تطابق الموقع المحدد الخاص بك.RewriteRule
تستهدف الطلبات إلىservlet1
أوservlet2
.
قاعدة إعادة كتابة محسنة
ومع ذلك، إذا كنت ترغب في تحسين تحققك للسماح فقط بالطلبات المشروعة التي تأتي من موقعك وحظر تلك التي تحتوي على سلاسل استعلام، ستحتاج إلى منطق أكثر تعقيدًا:
RewriteCond %{HTTP_REFERER} !^http://mywebaddress(.cl)?/.* [NC]
RewriteCond %{QUERY_STRING} ^.+$ [OR]
RewriteCond %{REQUEST_METHOD} ^POST$ [OR]
RewriteCond %{PATH_INFO} ^.+$
RewriteRule (servlet1|servlet2)\b - [F]
تحليل القاعدة المحسنة:
- الشرط الأول: يتحقق من أن الطلبات لا تأتي من عناوين المواقع المحددة.
- الشرط الثاني: يحظر الطلبات التي تحتوي على سلاسل استعلام غير فارغة.
- الشرط الثالث: يحظر الطلبات POST بشكل مباشر.
- الشرط الرابع: يحظر الطلبات التي تحتوي على PATH_INFO.
يجمع مزيج هذه الشروط بين التأكد من أن الطلبات المشروعة التي تمر عبر بيئة موقعك فقط يمكنها الوصول إلى صفحات السرفلت المحددة.
الخاتمة
بينما قد لا يوفر الاعتماد على HTTP_REFERER
أمنًا قابلاً للتطبيق بالكامل، إلا أنه تدبير أولي فعال لتقييد الوصول إلى الصفحات الحساسة. هذه الطريقة مفيدة بشكل خاص عندما لا تسمح القيود على مستوى التطبيق بإجراء تغييرات شاملة.
كتذكير، تضيف هذه الطريقة طبقة من الأمان، لكنها ليست حلاً كاملاً. دائماً افكر في تعزيز التحقق من جانب الخادم واستكشاف تدابير أمان إضافية مع نمو تطبيقك وقاعدة مستخدميه.
إذا كنت قد جربت هذه الطرق أو لديك رؤى إضافية، يرجى ترك تعليق - يمكن أن تساعد تجاربك الآخرين في مواجهة تحديات مماثلة!