يشرح هذا الدليل كيفية استخدام سياسة أمان المحتوى (CSP) للتخفيف من هجمات تنفيذ السكريبت عبر المواقع (XSS) في Discourse. يتناول أساسيات CSP، والإعداد، وأفضل الممارسات.
مستوى المستخدم المطلوب: مدير النظام
الملخص
تُعد سياسة أمان المحتوى (CSP) ميزة أمنية حاسمة في Discourse تساعد في الحماية من هجمات تنفيذ السكريبت عبر المواقع (XSS) وأنواع أخرى من هجمات الحقن. يغطي هذا الدليل أساسيات CSP، وكيفية تطبيقها في Discourse، وكيفية تكوينها لموقعك.
ما هي سياسة أمان المحتوى؟
سياسة أمان المحتوى هي طبقة أمنية إضافية تساعد في اكتشاف وتخفيف أنواع معينة من الهجمات، بما في ذلك هجمات تنفيذ السكريبت عبر المواقع (XSS) وهجمات حقن البيانات. تعمل CSP عن طريق تحديد مصادر المحتوى التي تُعتبر موثوقة، وإرشاد المتصفح إلى تنفيذ أو عرض الموارد من هذه المصادر الموثوقة فقط.
لا يزال XSS أحد أكثر ثغرات الويب شيوعًا. من خلال تطبيق CSP، يسمح Discourse بتحميل وتنفيذ السكريبتات من المصادر الموثوقة فقط، مما يقلل بشكل كبير من خطر هجمات XSS.
تطبيق CSP في Discourse
بدءًا من إصدار Discourse 3.3.0.beta1، يطبق Discourse سياسة CSP تعتمد على ‘strict-dynamic’. تستخدم هذه الطريقة قيمة nonce- واحدة وكلمة strict-dynamic في توجيه script-src. يتم منح جميع وسوم \u003cscript\u003e الأولية في النواة والقوالب سمة nonce= المناسبة تلقائيًا.
تشمل السياسة الافتراضية التوجيهات التالية:
script-src: يحدد المصادر الصالحة لملفات JavaScriptworker-src: يحدد المصادر الصالحة لسكريبتات ServiceWorkerobject-src: يمنع تنفيذ الإضافات (Flash، Java، إلخ)base-uri: يقيد عناوين URL لعناصر\u003cbase\u003emanifest-src: يقيد عناوين URL لملفات تعريف تطبيقات الويبframe-ancestors: يتحكم في المواقع التي يمكنها تضمين مثيل Discourse الخاص بك داخل إطار iframeupgrade-insecure-requests: يرقّي تلقائيًا طلبات HTTP إلى HTTPS (يُدرج عند تمكينforce_https)
تكوين CSP في Discourse
الإعدادات المتاحة
content_security_policy: يفعّل أو يعطّل CSP (الافتراضي: مفعل)content_security_policy_report_only: يفعّل وضع تقرير CSP فقط (الافتراضي: معطل)content_security_policy_script_src: يتيح لك توسيع توجيهscript-srcالافتراضيcontent_security_policy_frame_ancestors: يفعّل توجيهframe_ancestors(الافتراضي: مفعل)
كيفية تفعيل CSP
- انتقل إلى لوحة الإدارة (Admin panel)
- اذهب إلى إعدادات الأمان (Security settings)
- ابحث عن إعداد
content_security_policyوتأكد من أنه مفعل
يُنصح بالبدء بوضع تقرير CSP فقط (Report-Only mode) لتحديد أي مشاكل محتملة قبل تفعيل CSP بالكامل:
- فعّل إعداد
content_security_policy_report_only - راقب وحدة تحكم المتصفح (browser console) بحثًا عن انتهاكات CSP
- تعامل مع أي انتهاكات مشروعة عن طريق توسيع CSP حسب الحاجة
- بمجرد التأكد من عدم وجود نتائج إيجابية كاذبة، قم بإيقاف وضع التقرير فقط وقم بتفعيل CSP بالكامل
توسيع CSP الافتراضي
إذا كنت بحاجة إلى السماح بمصادر سكريبت إضافية، يمكنك توسيع توجيه script-src باستخدام إعداد content_security_policy_script_src. يمكنك إضافة:
- مصادر التجزئة (Hash-sources)
'wasm-unsafe-eval''unsafe-eval'(استخدم بحذر)
على سبيل المثال:
'sha256-QFlnYO2Ll+rgFRKkUmtyRublBc7KFNsbzF7BzoCqjgA=' 'unsafe-eval'
كن حذرًا عند إضافة 'unsafe-eval' أو أي توجيهات متساهلة أخرى، حيث يمكن أن تقلل من فعالية CSP.
CSP ودمج الطرف الثالث
عند استخدام خدمات طرف ثالث مثل Google Tag Manager أو Google Analytics أو خدمات الإعلان، قد تحتاج إلى تعديل إعدادات CSP الخاصة بك. في معظم الحالات مع إصدار Discourse 3.3.0.beta1 أو الأحدث، يجب أن تعمل السكريبتات الخارجية دون حاجة إلى تكوين إضافي بفضل تطبيق CSP ‘strict-dynamic’.
إذا واجهت مشاكل، قد تحتاج إلى:
- تحديد مصادر السكريبت المطلوبة عن طريق مراقبة وحدة تحكم المتصفح
- إضافة المصادر الضرورية إلى إعداد
content_security_policy_script_src - بالنسبة للدمج المعقد مثل خدمات الإعلانات التي تحمّل موارد خارجية، قد تحتاج إلى تمكين العرض عبر النطاقات (cross-domain rendering) (مثال على طلب سحب من discourse-adplugin يقوم بذلك).
أفضل الممارسات
- ابدأ بوضع تقرير CSP فقط لتحديد المشاكل المحتملة
- ضيق نطاق CSP تدريجيًا أثناء حل الانتهاكات المشروعة
- راجع إعدادات CSP بانتظام وعدّلها حسب الحاجة
- كن حذرًا عند إضافة توجيهات متساهلة مثل
'unsafe-eval'أو'wasm-unsafe-eval' - حافظ على تحديث مثيل Discourse للاستفادة من آخر تحسينات CSP
الأسئلة الشائعة (FAQs)
س: أرى العديد من تقارير انتهاكات CSP. هل يجب أن أقلق؟
ج: العديد من انتهاكات CSP هي نتائج إيجابية كاذبة، غالبًا ما تسببها ملحقات المتصفح أو سكريبتات أخرى غير ذات صلة. ركّز على معالجة الانتهاكات المتعلقة بوظائف موقعك.
س: هل يمكنني استخدام CSP مع Google AdSense أو شبكات إعلانية أخرى؟
ج: نعم، ولكن قد تحتاج إلى استخدام إعدادات CSP أكثر تساهلاً. ابدأ بوضع التقرير فقط وعدّل إعداداتك بناءً على الانتهاكات المبلغ عنها.
س: كيف يمكنني استكشاف مشاكل CSP وإصلاحها؟
ج: استخدم أدوات المطورين في متصفحك لمراقبة وحدة التحكم بحثًا عن رسائل انتهاك CSP. ستساعدك هذه في تحديد الموارد التي يتم حظرها ولماذا.







