السياسات الأمنية وسياسات برنامج الدعم القطري
1) لماذا نحتاج إلى سياسات أمنية
تعتمد الواجهة الحديثة وواجهة برمجة التطبيقات على العديد من المصادر (CDN، التحليلات، PSP، 3DS، الدردشات). بدون سياسات صارمة، تزداد مخاطر XSS وسرقة النقر وتسريب البيانات واختطاف الجلسات. تحد سياسات الأمان مما يسمح به افتراضيًا عن طريق نقل المتصفح إلى نموذج قائمة السماح.
2) الركائز الأساسية
CSP (سياسة أمن المحتوى) هي «قائمة» مركزية من مصادر وسلوكيات JS/CSS/الوسائط المسموح بها.
الأنواع الموثوقة - الحماية على مستوى النوع ضد DOM-XSS.
SRI (المصدر الفرعي للنزاهة) - التحكم في سلامة النصوص/الأساليب.
COOP/COEP/CORP - العزل الصارم للسياقات والموارد بين المصادر.
جلب البيانات الوصفية («Sec-Fetch-») هو حل خادم لتصفية الطلبات عبر الموقع.
CORS - سياسة الوصول إلى API عبر المجال.
العناوين الكلاسيكية: HSTS، «X-Frame-Options'/» frame-surcestors'،« Referrer-Policy »،« Permissions-Policy »، SameSite-cookies.
3) CSP: الأساس والمبادئ
3. 1 توجيهات (رئيسية)
«default-src» - افتراضي للتوجيهات الأخرى.
"script-src' - مصادر JS، nonce/hash،" صارمة ديناميكية "،" عينة التقرير ".
'style-src' - CSS sources; تقليل «غير آمن».
«img-src'،» font-src'، «media-src'،» object-src' (обычно «none»).
"connect-src' - طلبات الشبكة (XHR/getch/WebSocket).
«frame-src'/» child-src' - إطارات طرف ثالث (PSP، 3DS).
«أسلاف الإطارات» - الذين يمكنهم تضمين موقعنا (مكافحة النقر).
«base-uri» - حظر استبدال «<base>».
«الاستمارة» - حيث يسمح بتقديم الاستمارات.
«الطلبات غير الآمنة»، «حظر كل المحتوى المختلط» - محاربة مزيج HTTP/HTTPS.
«report-uri »/« report-to» - إلى أين ترسل الانتهاكات.
3. 2 نونس и هاش
Nonce approach: entrey a crypto-random 'nonce 'for every HTTP response, Add' <script nonce = "... ">' to inline scripts and 'script-src' nonce-"..
نهج الهاش: التجزئة الثابتة للمحتوى الداخلي. مناسب لـ HTML الثابت، غير مريح للديناميكيات.
"strict-dynamic': الثقة فقط نصوص محملة بنص" موثوق "(مع nonce/hash). يزيل الحاجة إلى إدراج المجالات المستهدفة أثناء التمهيد الديناميكي، ولكنه يتطلب متصفحات حديثة.
3. 3 حظر «غير آمن»
تجنب «غير آمن» و «غير آمن». إذا كان الإطار يتطلب المراجعة (على سبيل المثال، خريطة المصدر في التطوير)، قم بإدراجها فقط على التطوير.
للأنماط - استخدم «nonce» أو «hash»، إذا أمكن بدون خطوط داخلية.
3. 4 مثال على صرامة CSP (نقطة معركة)
Content-Security-Policy:
default-src 'none';
base-uri 'self';
object-src 'none';
script-src 'self' 'nonce-{RANDOM}' 'strict-dynamic' https://www. googletagmanager. com;
style-src 'self' 'nonce-{RANDOM}';
img-src 'self' data: https://images. example-cdn. com;
font-src 'self' https://fonts. gstatic. com;
connect-src 'self' https://api. example. com wss://ws. example. com;
frame-src https://3ds. psp. com https://pay. psp. com;
frame-ancestors 'none';
form-action 'self' https://pay. psp. com;
upgrade-insecure-requests;
report-to csp-endpoint; report-sample
4) الأنواع الموثوقة (DOM-XSS)
تمكين التوجيه: "المحتوى - الأمن - السياسة: المطلوب - أنواع موثوق بها - مقابل 'مخطوط' ؛ أنواع التطبيقات الموثوقة افتراضية '.
قم بإنشاء سياسة واحدة في الكود (نافذة. TrustedTypes. CreatePolicy ('app', {createHTML () {...}}) ').
حظر الإحالات غير الآمنة (عنصر. innerHTML = '...) без أنواع موثوقة.
التكامل الإطاري (رد الفعل/Angular/Vue): استخدم واجهات برمجة التطبيقات الآمنة، وتجنب الخطر بشكل خطير SetInnerHTML.
5) SRI (CDN Integrity)
للخارجية' <script> '/' <link>', use 'integrity =" sha256-... "crossorigin =" مجهول".
المكملات التكميلية لمبادرة الحقوق الجنسية لا الاستعاضة عنها بمبادرة الاستراتيجية القطرية. عند ترقية إصدار CDN، قم بتحديث التجزئة.
6) النقر والإطارات
الطريقة الحديثة هي «أسلاف الإطار» (تحل محل «خيارات الإطار X» القديمة).