سؤال

كنت أتساءل عما إذا كان من الممكن إعداد متطلبات مصادقة http الأساسية المشروطة استنادًا إلى عنوان URL للمضيف الظاهري في ملف htaccess.

على سبيل المثال، ما أريد فعله هو تشغيل mysite.com وtest.mysite.com على نفس قاعدة التعليمات البرمجية في نفس الدليل مع حماية كلمة المرور test.mysite.com.سيتم إعداده بهذه الطريقة حتى لا أحتاج إلى تفرع الكود الخاص بي نظرًا لأن كود التطبيق الخاص بي يمكنه رؤية vhost/url الذي يتم تقديمه منه واختيار قاعدة البيانات لعرض المحتوى منها.

هل كانت مفيدة؟

المحلول

يمكنك نوعًا من الحماقة باستخدام mod_setenvif جنبا إلى جنب مع mod_auth وحدات.استخدم ال SetEnvIfNoCase التوجيه لتعيين المضيف المحمي بكلمة مرور.ستحتاج إلى بعض التوجيهات الإضافية لتلبية الوصول:

# Check for the hostname here
SetEnvIfNoCase HOST ^test\.mysite\.com\.?(:80)?$ PROTECTED_HOST

ثم داخل Directory حظر (أو فقط في العلن) لديك إعداد عناصر المصادقة الخاصة بك، شيء من هذا القبيل:

AuthUserFile /var/www/test.mysite.com/htpasswd
AuthType Basic
AuthName "Password Protected"

الآن بالنسبة للأشياء التي تتطلب/تلبيتها:

Order Deny,Allow
Satisfy any
Deny from all
Require valid-user
Allow from env=!PROTECTED_HOST

سيؤدي هذا إلى منع أي مضيف غير مطابق ^test\.mysite\.com\.?(:80)?$ سيكون له حق الوصول دون الحاجة إلى المصادقة (Allow from env=!PROTECTED_HOST) لكن بخلاف ذلك، نحتاج إلى مستخدم صالح (Require valid-user).ال Satisfy any يضمن أننا نحتاج فقط إلى واحد من الاثنين، إما السماح أو الطلب.

نصائح أخرى

أواجه مشكلات في تنفيذ حل جون: على الرغم من أنني معتاد تمامًا على Apache conf والتعبيرات العادية ، إلا أن المصادقة تعمل دائمًا.من خلال التحليلات السريعة ، بدا أن خط الترميز العام لم يبدأ.

لكنني وجدت حلاً آخر يبدو أكثر أمانًا بالنسبة لي:

لقد أنشأت مضيفين افتراضيين للنطاقين يشيران إلى جذر المستند نفسه (وهو مسموح به تمامًا بالمناسبة).أضفت توجيهات المصادقة الأساسية في أحد المضيفات الافتراضية (مباشرة إلى كتلة توجيه vhost).

تعمل كالسحر.ولدي شعور أفضل بأن هذا آمن حقًا - لا توجد مخاطرة في التغاضي عن أي تفاصيل في نمط regex من شأنها أن تفتح البوابات للمتطفلين. Genacodicetagpre

فيما يلي حل مشابه لما اقترحه جون لين ، ولكن باستخدام رمز الترميز العام للتحقق من اسم المضيف: Genacodicetagpre

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top