سؤال

الوظيفة في متناول اليد:

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

هل هناك أي اقتراحات أفضل من فكرتي لإرسال ملف تعريف الارتباط والتحقق من وجود ملف تعريف الارتباط - قبل بدء التنزيل - (عبر .htaccess)؟

سيتم وضع صفحة الويب وملفات التنزيل على خوادم مختلفة.

بيئة:

  • اباتشي 2 على جميع الأجهزة
  • PHP 5 على جميع الأجهزة
  • MySQL 5 متاح على خادم "صفحة الويب" (لا يمكن الوصول إليه من خوادم التنزيل)

سأل ناثان ما هي المشكلة التي أحاول حلها، وفي الواقع هي أنني أريد منع الروابط الساخنة من - على سبيل المثال - المنتديات.إذا قام الأشخاص بالتنزيل من خادمنا، باستخدام النطاق الترددي الخاص بنا، فأنا أريد أن أعرض لهم صفحة تحتوي على إعلان قبل بدء التنزيل.ليس من الضروري أن يكون آمنًا تمامًا، ولكننا بحاجة إلى كسب بعض المال لتمويل الخوادم، أليس كذلك؟:)

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

المحلول 6

انا ذاهب للاستخدام mod_auth_token للتأكد من أن المستخدم لديه "رابط حديث".

باستخدام mod_auth_token، يمكنك إنشاء روابط منتهية الصلاحية، على سبيل المثال.إذا قرر شخص ما أخذ رابط موجود ونشره على موقع ويب آخر، فستنتهي صلاحية هذا الرابط بعد فترة زمنية محددة.سيؤدي ذلك إلى حظر 403 والذي يمكنني من خلاله التقاط المستخدم وإعادة توجيهه إلى صفحة HTML التي أريده فيها.

نصائح أخرى

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

يمكن لـ Apache mod_rewrite RewriteRule القيام بذلك.

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://www.example.com/page.html$
RewriteRule file.exe http://www.example.com/page.html [R=301,L]

في الأساس، إذا كان الطلب ل file.exe لم يأتي مع page.html بصفته المُحيل، فإنه سيعيد توجيه المستخدم إلى 301 page.html.

يمكنك استخدام جانب الخادم الموزع الجلسات بدلاً من ملفات تعريف الارتباط، ولكن ربما يمثل ذلك مشكلة أكثر مما يستحق.

هل يمكن أيضا منع الوصول للطلبات التي لا تحتوي على مُحيل أو مع مُحيل خاطئ.لكن هذا أكثر تزييفًا من ملف تعريف الارتباط.

سيعتمد الأمر على مدى اهتمامك.

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

يجب أن يقوم ملف تعريف الارتباط بالمهمة إذا كنت بحاجة إلى شيء أكثر أمانًا.لا يمكننا استخدام جلسات php فقط لأن خادم الملفات وخادم الويب موجودان في صناديق مختلفة.ولكن يمكننا إنشاء ملف تعريف الارتباط استنادًا إلى تجزئة الوقت وبعض القيمة السرية.

cookievalue = sha1('secretvalue'.date('z-H'));

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

كنت على وشك اقتراح خدعة الإحالة إلى ‎.htaccess، لكنها ليست طريقة آمنة جدًا.من السهل إنشاء برنامج نصي PHP، مع إضافة إحالة http مخصصة.إذا قمت بالدخول إلى صفحة التنزيل هناك، فسوف يعتقد أنك قادم من تلك الصفحة.

هل هذه مشكلة ذات صلة؟هل يمكنك إخبارنا بشيء عن سياق صفحة التنزيل الخاصة بك؟

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