مولّد سياسة أمان المحتوى
أنشئ رؤوس CSP للحماية من هجمات XSS وحقن الكود. يتضمن إعدادات أمان مسبقة وتكوينات Nginx وApache وHTML meta.
إعدادات الأمان المسبقة
تكوين التوجيهات
fetch Directives
default-srcFallback for other fetch directives
Examples: 'self', 'self' https:, 'none'
script-srcSources for JavaScript execution
Examples: 'self', 'self' 'unsafe-inline', 'self' https://cdn.example.com
style-srcSources for stylesheets
Examples: 'self', 'self' 'unsafe-inline', 'self' https://fonts.googleapis.com
img-srcSources for images
Examples: 'self', 'self' data:, 'self' https: data:
font-srcSources for fonts
Examples: 'self', 'self' https://fonts.gstatic.com, 'self' data:
connect-srcSources for XHR, WebSocket, and EventSource
Examples: 'self', 'self' https://api.example.com, 'self' wss:
media-srcSources for audio and video
Examples: 'self', 'self' https://media.example.com, 'none'
object-srcSources for plugins (object, embed, applet)
Examples: 'none', 'self', 'self' https://plugins.example.com
frame-srcSources for nested browsing contexts (iframe)
Examples: 'self', 'none', 'self' https://www.youtube.com
worker-srcSources for Worker, SharedWorker, or ServiceWorker
Examples: 'self', 'none', 'self' blob:
manifest-srcSources for web app manifests
Examples: 'self', 'none', 'self' https://cdn.example.com
document Directives
base-uriRestrict URLs for <base> elements
Examples: 'self', 'none', 'self' https://example.com
navigation Directives
form-actionRestrict form submission URLs
Examples: 'self', 'none', 'self' https://api.example.com
frame-ancestorsRestrict embedding this page in frames
Examples: 'none', 'self', 'self' https://trusted.example.com
reporting Directives
report-uriURL to send CSP violation reports
Examples: https://example.com/csp-report, /csp-violation-endpoint
سياسة أمان المحتوى المولّدة
سياسة CSP
default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self'; font-src 'self'; connect-src 'self'; media-src 'self'; object-src 'none'; frame-src 'self'; worker-src 'self'; manifest-src 'self'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'
رأس HTTP
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self'; font-src 'self'; connect-src 'self'; media-src 'self'; object-src 'none'; frame-src 'self'; worker-src 'self'; manifest-src 'self'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'
Meta Tag HTML
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self'; font-src 'self'; connect-src 'self'; media-src 'self'; object-src 'none'; frame-src 'self'; worker-src 'self'; manifest-src 'self'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'">
تكوين Nginx
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self'; font-src 'self'; connect-src 'self'; media-src 'self'; object-src 'none'; frame-src 'self'; worker-src 'self'; manifest-src 'self'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'";
تكوين Apache
Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self'; font-src 'self'; connect-src 'self'; media-src 'self'; object-src 'none'; frame-src 'self'; worker-src 'self'; manifest-src 'self'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'"
تنزيل التكوين
نصائح الأمان
- • ابدأ بوضع التقارير فقط لتحديد التغييرات التي قد تسبب مشاكل
- • تجنب 'unsafe-inline' و'unsafe-eval' قدر الإمكان
- • استخدم nonces أو hashes للسكريبتات/الأنماط المضمنة بدلاً من ذلك
- • راجع وحدّث CSP بانتظام مع تطور موقعك
- • راقب تقارير انتهاك CSP لاكتشاف الهجمات وسوء التكوين
- • استخدم 'strict-dynamic' مع nonces لتطبيقات CSP الحديثة
أدوات ذات صلة
حول هذه الأداة
كيف تعمل
- قم بتكوين توجيهات CSP للتحكم في تحميل الموارد
- استخدم إعدادات الأمان المسبقة لمستويات الأمان الشائعة
- إنشاء رؤوس لخوادم الويب المختلفة
- اختبر بوضع التقارير فقط قبل التطبيق
حالات الاستخدام الشائعة
- منع هجمات XSS وحقن الكود
- التحكم في تحميل موارد الطرف الثالث
- تطبيق أمان دفاعي متعمق
- الامتثال لأفضل ممارسات الأمان
الأسئلة الشائعة
ما هي سياسة أمان المحتوى (CSP) ولماذا أحتاجها؟
CSP هي ميزة أمان تساعد في منع هجمات البرمجة النصية عبر المواقع (XSS) وحقن البيانات عن طريق التحكم في الموارد التي يمكن تحميلها على موقعك. وهي طبقة أمان إضافية للحماية من تنفيذ الكود الضار.
ما الفرق بين وضع التطبيق ووضع التقارير فقط؟
يحظر وضع التطبيق بنشاط انتهاكات سياسة CSP، بينما يسجل وضع التقارير فقط الانتهاكات دون حظرها. استخدم وضع التقارير أولاً لاختبار سياستك وتحديد المشكلات المحتملة قبل تطبيقها.
أي إعداد أمان مسبق يجب أن أختار؟
ابدأ بـ'الأمان الصارم' للحماية القصوى، أو 'الأمان المعتدل' لمعظم المواقع ذات الموارد الخارجية، أو 'المسموح به' للمواقع التطويرية أو القديمة. يمكنك دائماً تخصيص التوجيهات بعد اختيار إعداد مسبق.
هل يمكنني استخدام CSP مع meta tags بدلاً من رؤوس HTTP؟
نعم، لكن رؤوس HTTP موصى بها لأنها توفر وظائف وأماناً أكثر. لاحظ أن وضع التقارير فقط يمكن تنفيذه عبر رؤوس HTTP فحسب، وليس meta tags.
ماذا يعني 'unsafe-inline' وهل يجب تجنبه؟
يسمح 'unsafe-inline' بتنفيذ السكريبتات والأنماط المضمنة، مما قد يشكل مخاطرة أمنية. من الأفضل استخدام ملفات خارجية أو تنفيذ nonces/hashes للمحتوى المضمن.
كيف أتعامل مع خدمات الطرف الثالث مثل Google Analytics أو CDNs؟
أضف النطاقات المحددة إلى التوجيهات المناسبة (مثل script-src للتحليلات، font-src للخطوط). لـ Google Analytics، أضف 'https://www.google-analytics.com' إلى script-src. كن محدداً بدلاً من استخدام wildcards.
ماذا أفعل إذا كسرت CSP موقعي؟
أولاً، استخدم وضع التقارير فقط لتحديد الانتهاكات دون كسر الوظائف. تحقق من وحدة تحكم المتصفح لأخطاء انتهاك CSP، ثم قم بتحديث سياستك للسماح بالموارد الضرورية.
كيف أطبق تقارير انتهاك CSP؟
أنشئ توجيه report-uri يشير إلى نقطة نهاية يمكنها استقبال طلبات POST ببيانات انتهاك CSP. توفر خدمات كثيرة مراقبة انتهاكات CSP، أو يمكنك إنشاء نقطة نهاية خاصة بك.
هل يمكنني استخدام سياسات CSP متعددة على نفس الصفحة؟
إذا تم تعريف سياسات CSP متعددة (عبر الرؤوس والـ meta tags)، تُطبق السياسة الأكثر تقييداً. يُوصى باستخدام سياسة واحدة مُكوَّنة جيداً بدلاً من سياسات متعددة متعارضة.
ما الفرق بين frame-src وframe-ancestors؟
يتحكم frame-src في عناوين URL التي يمكن لصفحتك تضمينها في iframes، بينما يتحكم frame-ancestors في عناوين URL التي يمكنها تضمين صفحتك. استخدم frame-ancestors: 'none' لمنع تضمين صفحتك في أي مكان.
كم مرة يجب أن أحدث سياسة CSP الخاصة بي؟
راجع سياسة CSP كلما أضفت خدمات طرف ثالث جديدة أو غيرت بنية موقعك أو تلقيت تقارير انتهاك. يجب أن تشمل عمليات التدقيق الأمني الدورية مراجعة سياسة CSP.
هل تعمل CSP في جميع المتصفحات؟
CSP مدعومة في جميع المتصفحات الحديثة، لكن بعض الإصدارات القديمة قد يكون لها دعم محدود لميزات CSP الأحدث. تتدهور CSP بسلاسة — التوجيهات غير المدعومة يتم تجاهلها.