سياسة أمن المحتوى (Content Security Policy – CSP)

سياسة أمن المحتوى (Content Security Policy – CSP) هي ميزة أمان تهدف إلى حماية تطبيقات الويب من التهديدات مثل هجمات البرمجة عبر المواقع (XSS) وهجمات التلاعب بالنقر (Clickjacking)، وذلك عن طريق تحديد القواعد التي تتحكم في الموارد التي يمكن للصفحة تحميلها.

أهم ميزات CSP:

  • تقييد السكربتات المضمنة: يمنع تنفيذ جافا سكريبت المضمنة لتقليل خطر هجمات XSS.
  • التحكم في المصادر الخارجية: يحدد النطاقات المسموح لها بتقديم السكربتات، الأنماط، الصور، الخطوط وغيرها.
  • منع وظائف جافا سكريبت غير الآمنة: يحظر استخدام eval() وغيره من الوظائف التي قد تسبب ثغرات.
  • الحماية من التلاعب بالنقر: باستخدام توجيه frame-ancestors لمنع تحميل الصفحة داخل إطارات غير مرغوب فيها.
  • فرض الاتصال الآمن: التأكد من تحميل الموارد عبر HTTPS.

مثال على ترويسة CSP:

plaintext

Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted.com; img-src 'self' data:;

هذه السياسة:

  • تسمح بتحميل الموارد فقط من نفس النطاق ('self').
  • تتيح تحميل السكربتات من نفس النطاق ومن https://trusted.com.
  • تسمح بتحميل الصور من نفس النطاق ومن data:.

يمكنك أيضًا الاطلاع على دليل MDN أو ورقة الغش من OWASP للحصول على معلومات إضافية.

1. تقييد تحميل الموارد الخارجية

لمنع تحميل الموارد من مصادر غير موثوقة، يمكن استخدام CSP كما يلي:

plaintext

Content-Security-Policy: default-src 'self'; img-src 'self' https://trusted-images.com; script-src 'self' https://trusted-scripts.com;
  • يسمح بتحميل جميع الموارد من نفس المصدر ('self').
  • يسمح بتحميل الصور فقط من https://trusted-images.com.
  • يسمح بتحميل السكريبتات فقط من https://trusted-scripts.com.

2. منع تنفيذ الأكواد البرمجية المضمنة (Inline Scripts)

لمنع تنفيذ الأكواد البرمجية داخل HTML، يمكن استخدام script-src 'self' أو nonce:

plaintext

Content-Security-Policy: script-src 'self' 'nonce-abc123';
  • يسمح فقط بتنفيذ السكريبتات القادمة من نفس المصدر ('self').
  • يسمح بتنفيذ السكريبتات التي تحتوي على nonce محدد مسبقًا.

3. حماية الموقع من هجمات XSS

لمنع إدخال أكواد ضارة عبر حقن HTML، يمكن استخدام CSP صارمة:

plaintext

Content-Security-Policy: script-src 'self' 'strict-dynamic'; object-src 'none'; base-uri 'none';
  • يمنع تحميل أي سكريبت غير موثوق.
  • يمنع تحميل أي كائنات (object-src 'none').
  • يمنع تغيير قاعدة URI (base-uri 'none').

4. السماح بتحميل الخطوط والصور من مصادر محددة

إذا كنت تريد السماح بتحميل الخطوط والصور من مصادر معينة فقط:

plaintext

Content-Security-Policy: font-src 'self' https://fonts.googleapis.com; img-src 'self' https://cdn.example.com;
  • يسمح بتحميل الخطوط من https://fonts.googleapis.com.
  • يسمح بتحميل الصور من https://cdn.example.com.

يمكنك الاطلاع على المزيد من التفاصيل حول تطبيق CSP من خلال هذا المصدر أو هذا الدليل.

أضف تعليقاً