# التخفيف من هجمات XSS باستخدام سياسة أمان المحتوى

**URL:** https://meta.discourse.org/t/mitigate-xss-attacks-with-content-security-policy/104243
**Category:** Site Management
**Tags:** how-to, content-security-policy
**Created:** [14 ديسمبر 2018، 4:38م UTC](https://meta.discourse.org/t/mitigate-xss-attacks-with-content-security-policy/104243 "2018-12-14T16:38:20Z")
**Posts on this page:** 1
**Showing post:** 1

<div class="post-metadata">

### Author: ![Discourse](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/discourse/32/148734_2.png) [@Discourse](https://meta.discourse.org/u/Discourse)
#### Post date: [14 ديسمبر 2018، 4:38م UTC](https://meta.discourse.org/t/mitigate-xss-attacks-with-content-security-policy/104243/1 "2018-12-14T16:38:20Z")

</div>

> 🔖 يشرح هذا الدليل كيفية استخدام سياسة أمان المحتوى (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`: يحدد المصادر الصالحة لملفات JavaScript
- `worker-src`: يحدد المصادر الصالحة لسكريبتات ServiceWorker
- `object-src`: يمنع تنفيذ الإضافات (Flash، Java، إلخ)
- `base-uri`: يقيد عناوين URL لعناصر `\u003cbase\u003e`
- `manifest-src`: يقيد عناوين URL لملفات تعريف تطبيقات الويب
- `frame-ancestors`: يتحكم في المواقع التي يمكنها تضمين مثيل Discourse الخاص بك داخل إطار iframe
- `upgrade-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`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src) الافتراضي
- `content_security_policy_frame_ancestors`: يفعّل توجيه [`frame_ancestors`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors) (الافتراضي: مفعل)

### كيفية تفعيل CSP

1. انتقل إلى لوحة الإدارة (Admin panel)
2. اذهب إلى إعدادات الأمان (Security settings)
3. ابحث عن إعداد `content_security_policy` وتأكد من أنه مفعل

يُنصح بالبدء بوضع تقرير CSP فقط (Report-Only mode) لتحديد أي مشاكل محتملة قبل تفعيل CSP بالكامل:

1. فعّل إعداد `content_security_policy_report_only`
2. راقب وحدة تحكم المتصفح (browser console) بحثًا عن انتهاكات CSP
3. تعامل مع أي انتهاكات مشروعة عن طريق توسيع CSP حسب الحاجة
4. بمجرد التأكد من عدم وجود نتائج إيجابية كاذبة، قم بإيقاف وضع التقرير فقط وقم بتفعيل CSP بالكامل

### توسيع CSP الافتراضي

إذا كنت بحاجة إلى السماح بمصادر سكريبت إضافية، يمكنك توسيع توجيه `script-src` باستخدام إعداد `content_security_policy_script_src`. يمكنك إضافة:

- مصادر التجزئة (Hash-sources)
- `'wasm-unsafe-eval'`
- `'unsafe-eval'` (استخدم بحذر)

على سبيل المثال:

```plaintext
'sha256-QFlnYO2Ll+rgFRKkUmtyRublBc7KFNsbzF7BzoCqjgA=' 'unsafe-eval'

```

⚠ كن حذرًا عند إضافة `'unsafe-eval'` أو أي توجيهات متساهلة أخرى، حيث يمكن أن تقلل من فعالية CSP.

## CSP ودمج الطرف الثالث

عند استخدام خدمات طرف ثالث مثل Google Tag Manager أو Google Analytics أو خدمات الإعلان، قد تحتاج إلى تعديل إعدادات CSP الخاصة بك. في معظم الحالات مع إصدار Discourse 3.3.0.beta1 أو الأحدث، يجب أن تعمل السكريبتات الخارجية دون حاجة إلى تكوين إضافي بفضل تطبيق CSP ‘strict-dynamic’.

إذا واجهت مشاكل، قد تحتاج إلى:

1. تحديد مصادر السكريبت المطلوبة عن طريق مراقبة وحدة تحكم المتصفح
2. إضافة المصادر الضرورية إلى إعداد `content_security_policy_script_src`
3. بالنسبة للدمج المعقد مثل خدمات الإعلانات التي تحمّل موارد خارجية، قد تحتاج إلى تمكين العرض عبر النطاقات (cross-domain rendering) ([مثال على طلب سحب من discourse-adplugin](https://github.com/discourse/discourse-adplugin/pull/201) يقوم بذلك).

## أفضل الممارسات

1. ابدأ بوضع تقرير CSP فقط لتحديد المشاكل المحتملة
2. ضيق نطاق CSP تدريجيًا أثناء حل الانتهاكات المشروعة
3. راجع إعدادات CSP بانتظام وعدّلها حسب الحاجة
4. كن حذرًا عند إضافة توجيهات متساهلة مثل `'unsafe-eval'` أو `'wasm-unsafe-eval'`
5. حافظ على تحديث مثيل Discourse للاستفادة من آخر تحسينات CSP

## الأسئلة الشائعة (FAQs)

**س: أرى العديد من تقارير انتهاكات CSP. هل يجب أن أقلق؟**  
ج: العديد من انتهاكات CSP هي نتائج إيجابية كاذبة، غالبًا ما تسببها ملحقات المتصفح أو سكريبتات أخرى غير ذات صلة. ركّز على معالجة الانتهاكات المتعلقة بوظائف موقعك.

**س: هل يمكنني استخدام CSP مع Google AdSense أو شبكات إعلانية أخرى؟**  
ج: نعم، ولكن قد تحتاج إلى استخدام إعدادات CSP أكثر تساهلاً. ابدأ بوضع التقرير فقط وعدّل إعداداتك بناءً على الانتهاكات المبلغ عنها.

**س: كيف يمكنني استكشاف مشاكل CSP وإصلاحها؟**  
ج: استخدم أدوات المطورين في متصفحك لمراقبة وحدة التحكم بحثًا عن رسائل انتهاك CSP. ستساعدك هذه في تحديد الموارد التي يتم حظرها ولماذا.

## موارد إضافية

- [Content Security Policy (CSP) - HTTP | MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP)
- [Content security policy &nbsp;|&nbsp; Articles &nbsp;|&nbsp; web.dev](https://developers.google.com/web/fundamentals/security/csp/)
- [Content Security Policy Level 3](https://w3c.github.io/webappsec-csp/)
- [Strict CSP - Content Security Policy](https://csp.withgoogle.com/docs/strict-csp.html)
- [https://csp-evaluator.withgoogle.com/](https://csp-evaluator.withgoogle.com/)

---

_[View the full topic](https://meta.discourse.org/t/mitigate-xss-attacks-with-content-security-policy/104243)._
