سؤال

لقد قمت بتطوير نوع من مستكشف الخادم كوحدة نمطية لتطبيق الويب الخاص بنا، وهو يعمل بشكل رائع بالفعل.أقوم ببعض التحسينات عليها وهناك مشكلة واحدة لا أعرف حقًا كيفية معالجتها.

يستخدم Explorer بشكل أساسي لاختيار الصور من مجلد ومجلدات فرعية محددة.نظرًا لأن بعض المدارس تهتم بتوزيع الصور خارج مؤسستها، فقد قدمنا ​​لهم خيارًا لتأمين صورهم باستخدام ‎.htaccess (في الواقع عبر واجهة الويب التي تقوم بدورها بتعيين ‎.htaccess) إذا أرادوا ذلك.

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

نحن نقوم بتشغيل Perl في الواجهة الخلفية لذا اعتقدت أنه يمكنني التحقق مما إذا كان مجلد معين محميًا أم لا قبل تسليم المحتوى إلى jQuery.المشكلة هي أنه يمكن أيضًا حماية الصور بواسطة ملف .htaccess من المجلد الأصلي.

هل هناك أي طريقة آمنة للتحقق مما إذا كان بإمكان شخص خارجي الوصول إلى هذه الصور (أو الملفات، لإبقائها عامة ومفتوحة لاستخدامات أخرى) قبل إعطاء الصور؟

تحرير - تمت إضافة ملف htaccess
## أوليفا أوث ستارت ##
نوع المصادقة الأساسي
اسم المصادقة "192.168.1.120/الموارد/الصور/اختبار الوصول"
AuthUserFile /home/mike/workspace/olefa//resources/images/accesstest/.htpasswd
تتطلب مستخدمًا صالحًا
## أوليفا أوث إند ##

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

المحلول

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

نصائح أخرى

يبدو أنك قد تقوم ببناء طبقة فوق طبقة من كود الإصلاح لتصميم أو عملية معيبة.

إذا كنت تحصل على مربع حوار اسم المستخدم وكلمة المرور لكل صورة من نفس الدليل، أظن في البداية:

  1. تم تكوين htaccess بطريقة خاطئة.هل يمكنك أن تبين لنا ما لديك؟
  2. لا يرسل وكيل المستخدم رأس التفويض.انظر إلى طلبات HTTP للتحقق من أنك ترى رأس التفويض.انظر أيضًا إلى حالة الاستجابة.هل هو 401 أم 403؟

إذا كنت تحاول الوصول إلى الموارد في مسارات مختلفة، فهل تستخدم مجالًا مختلفًا لكل مجلد؟تنطبق أوراق الاعتماد فقط على المجال الذي قدم التحدي.إذا وصلت إلى عالم آخر وعليك أن تبدأ من جديد.كيف يمكنك تحديد ذلك في htaccess الخاص بك؟

بعض الأشياء الأخرى التي يمكن أن تساعدنا:

  • ما نوع المصادقة التي تستخدمها؟أساسي، ملخص، شيء آخر؟
  • هل تستخدم معالج ترخيص مخصص؟
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top