مولّد CSP
أنشئ ترويسة Content-Security-Policy دون حفظ الصياغة. اختر المصادر لكل توجيه، وابدأ من قالب جاهز، واعرف مواضع الضعف، ثم انسخ النتيجة لخادمك أو لوسم meta أو لملف _headers. كل شيء يعمل داخل متصفحك.
ابنِ سياستك
ابدأ من قالب جاهز، ثم حدّد المصادر التي يحتاجها كل توجيه وأضف مضيفيك. تتحدّث السياسة فورًا.
تُبنى السياسة داخل متصفحك. لا يُرسَل أي شيء تختاره أو تلصقه إلى خادم، ولا يُسجَّل ولا يُحفظ.
تخبر Content-Security-Policy المتصفح بدقة من أين يمكن للصفحة تحميل السكربتات والأنماط والصور والخطوط والإطارات. وكل ما عدا ذلك يُحظر، فتتحول معظم ثغرات البرمجة النصية عبر المواقع من اختراق إلى مجرد خطأ في وحدة التحكم. المشكلة في الصياغة: علامة اقتباس أو مصدر ناقص وتتعطل الصفحة. يكتب هذا المولّد السياسة نيابةً عنك وينبّهك إلى الإعدادات التي تُلغي الحماية بصمت.
أهم الفوائد
حالات استخدام شائعة
طريقة الاستخدام
- 1.اختر قالبًا. ابدأ من بداية صارمة ثم أضف Google Analytics 4 أو Google Fonts أو غيرها مما يستخدمه موقعك. أو استورد سياستك الحالية.
- 2.اضبط كل توجيه. حدّد الكلمات المفتاحية اللازمة واكتب مضيفين إضافيين، مثل
https://cdn.example.com، في الخانة أسفله. - 3.اقرأ فحص السياسة. أصلح كل ما عليه ✗ وقرّر بشأن ما عليه ⚠. توضح كل رسالة سبب أهميته.
- 4.انشر أولًا في وضع التقارير فقط. فعّل وضع التقارير فقط، وانسخ المقطع الخاص بخادمك، وراقب وحدة تحكم المتصفح بضعة أيام قبل فرض السياسة.
أهم التوجيهات
ابدأ بصرامة عبر default-src ولا تفتح إلا ما تحتاجه ميزة فعلية. تحمل هذه الإعدادات الستة معظم الحماية.
'unsafe-inline'؛ واسمح بالشيفرة المضمّنة عبر nonce أو hash، ولا تذكر إلا مضيفي السكربتات الذين تستخدمهم فعلًا.أهم الميزات
- 14 توجيهًا، لكل منها كلماته المفتاحية ومضيفون أحرار
- قوالب لبداية صارمة وGoogle Analytics 4 وGoogle Fonts وYouTube وStripe
- يستورد ترويسة موجودة لمراجعتها أو توسيعها
- فحص فوري لـ unsafe-inline وunsafe-eval وhttps: وdata: والأحرف البديلة والتوجيهات الناقصة
- وضع التقارير فقط وupgrade-insecure-requests وreport-uri
- مخرجات لترويسة HTTP ووسم meta وNginx وApache وملفات _headers
- يعمل في متصفحك؛ لا يُرفع شيء
CSP خط دفاع ثانٍ
تحدّ CSP من الضرر حين تتسلل ثغرة حقن؛ لكنها لا تغني عن تهريب المخرجات والتحقق من المدخلات. والسياسة التي تسمح بسكربتات 'unsafe-inline' أو بأي مضيف HTTPS تبدو مطمئنة لكنها لا توقف إلا القليل، فاعتبر التحذيرات هنا هي العمل الحقيقي.
انشر السياسة الجديدة بتدرّج: أرسلها كـ Report-Only، وأصلح ما يتعطل، ثم افرضها. بعد النشر يؤكد فاحص ترويسات الأمان لدينا أن الترويسة تُرسل فعلًا إلى جانب HSTS وغيرها. ويشرح دليل ترويسات الأمان كيف تتكامل CSP معها.
أسئلة شائعة
ما هي Content-Security-Policy؟⌄
هي ترويسة استجابة HTTP تسرد المواضع التي يمكن للصفحة تحميل السكربتات والأنماط والصور والخطوط والإطارات وغيرها منها. ويحظر المتصفح كل ما عدا ذلك. ومهمتها الأساسية إيقاف البرمجة النصية عبر المواقع: حتى لو حقن مهاجم وسم script، يرفض المتصفح تنفيذه.
هل أستخدم ترويسة أم وسم meta؟⌄
استخدم ترويسة HTTP كلما أمكن. يعمل وسم meta مع معظم التوجيهات، لكنه لا يدعم frame-ancestors ولا report-uri ولا وضع التقارير فقط، ولا يسري إلا على المحتوى الذي يليه. إنه بديل للاستضافات التي لا تتيح ضبط الترويسات.
لماذا 'unsafe-inline' سيئ في script-src؟⌄
لأنه يسمح بتنفيذ أي سكربت مضمّن، بما فيه سكربت يحقنه مهاجم، وهذا تحديدًا ما وُجدت CSP لمنعه. إن احتجت إلى سكربتات مضمّنة فامنح كلًا منها nonce يتغير مع كل استجابة، أو اسمح بقيمة SHA-256 الخاصة به. أما 'unsafe-inline' في style-src فأقل خطرًا بكثير وغالبًا ما يُتسامح معه.
هل ستعطّل CSP موقعي؟⌄
غالبًا ما تحظر السياسة الصارمة شيئًا في المرة الأولى: وسم تحليلات أو خطًا أو محتوى مضمّنًا. لذلك أرسلها أولًا كـ Content-Security-Policy-Report-Only، وراقب وحدة التحكم أو نقطة استقبال التقارير، وأضف المصادر التي تحتاجها فعلًا، ثم افرضها.
كيف أتحقق من أن CSP تعمل؟⌄
افتح الصفحة وانظر إلى ترويسات الاستجابة في أدوات المطوّر، أو افحص النطاق بفاحص ترويسات الأمان. تظهر المخالفات في وحدة التحكم مع التوجيه والرابط المحظور، فتعرف بالضبط ما يجب إضافته.