هل يمكنني منع التنزيل من الروابط الخارجية؟

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

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

location /uploads/ {
    valid_referers  www.example.com;
    if ($invalid_referer) {
        return 403;
    }
}

استبدال www.example.com في الكود أعلاه بنطاق مثيل Discourse الخاص بك يجب أن يكون إعدادًا مناسبًا لـ nginx لمنع الارتباط المباشر بملفات التحميل على مثيلك.

قد ترغب أيضًا في فعل شيء مختلف عن إرجاع 403 (غير مسموح)، على سبيل المثال، قد ترغب في إعادة التوجيه إلى الصفحة الرئيسية لمثيل Discourse الخاص بك. للقيام بذلك، يمكنك استخدام الكود التالي بدلاً من ذلك.

location /uploads/ {
    valid_referers  www.example.com;
    if ($invalid_referer) {
        return 307 /;
    }
}

يجب أن يكون من الممكن إضافة شيء ما إلى ملف app.yml الخاص بك لحقن الإعداد أثناء إعادة البناء. لكنني لست متأكدًا من كيفية القيام بذلك، حيث لم أدرس ذلك بتفصيل كبير.

4 إعجابات