لماذا تهم
هي خط دفاع ثان ضد البرمجة النصية عبر المواقع. فالشيفرة الجيدة هي التي تمنع الحقن من الأساس. وإذا تسرب خطأ، فقد تمنع سياسة صارمة المتصفح من تشغيل شيفرة المهاجم أو من إرسال البيانات إلى خادمه. كما أنها تحدد المواقع التي يجوز لها تضمين صفحاتك، وهذا يفيد ضد هجمات خداع النقر (clickjacking).
أهم التوجيهات
| التوجيه | ما الذي يتحكم فيه |
|---|---|
| default-src | الاحتياطي لأي نوع لم تحدده |
| script-src | من أين يجوز تحميل الشيفرات، وهل تعمل الشيفرات المضمنة |
| style-src | من أين يجوز تحميل الأنماط |
| connect-src | العناوين التي يجوز لشيفرة الصفحة الاتصال بها |
| frame-ancestors | المواقع التي يجوز لها تضمين هذه الصفحة في إطار |
كيف تطبقها
- ابدأ بوضع المراقبة فقط، عبر ترويسة Content-Security-Policy-Report-Only. يبلغك المتصفح بما كان سيحجبه دون أن يحجبه.
- راجع التقارير، واكتب قائمة بكل شيفرة وأسلوب وخدمة يحتاجها الموقع فعلا، بما فيها التحليلات وأدوات الدردشة وإطارات الدفع.
- فضل الرموز العشوائية لمرة واحدة (nonces) أو البصمات (hashes) للشيفرات المضمنة على السماح بكل الشيفرات المضمنة.
- انتقل إلى وضع الفرض، وأبق نقطة استقبال للتقارير لترى ما ينكسر.
أخطاء شائعة
- إضافة unsafe-inline إلى script-src، وهذا يزيل معظم الحماية.
- السماح بمضيفين واسعين جدا، كشبكة توصيل محتوى كاملة، يستطيع المهاجم استخدامها أيضا.
- نسخ سياسة من مقال دون اختبارها، ثم تعطيل الدفع أو تسجيل الدخول.
- اعتبار السياسة بديلا عن إصلاح الثغرة نفسها.
مصطلحات ذات صلة
راجع البرمجة النصية عبر المواقع لمعرفة الهجوم الذي تحد منه السياسة، وOWASP Top 10 لمعرفة موقعها في الصورة الأكبر. وقائمة الأمان الافتراضي للويب لدينا نقطة انطلاق عملية.