محتويات الدورة

أمان الويب / المتقدم: الضمان وسلسلة البناء والتعافي / الدرس 13

رؤوس الأمان وسياسة أمن المحتوى

عامل سياسة رد المتصفح كعقد مراجع بمسؤوليات توافق وطرح وتحقق.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • اشرح CSP والرؤوس المكملة دون مبالغة.
  • افصل رصد report-only من الإنفاذ.

حدد قدرة المتصفح المقيدة

قد تقيد رؤوس الرد تنفيذ النصوص وتحميل الموارد والتضمين وتفسير MIME وكشف الإحالة والنقل. تكمل ضوابط التطبيق ولا تصلح كل مصرف أو إذن. حدد النص والتنسيق والصورة والإطار والاتصال المشروع قبل اختيار السياسة. قد تكسر نسخة صارمة التطبيق دون غرض حماية مفهوم. راجع مسار الرد الحقيقي، بما فيه الوكلاء والخطأ والتحويل والمخبأ. لا يثبت عرض النص ضبط خادم أو إنفاذ متصفح؛ يبقى دعم العميل وسياق النشر ضمن الادعاء والدليل المطلوبين.

اقرأ سياسة توضيحية ضيقة

يسمح المثال موارد الأصل الافتراضية ويمنع object وتغيير base والتضمين. ليس سياسة عامة لكل منتج. قد تحتاج النصوص المضمنة والتكاملات الخارجية تصميماً آخر، غالباً بآلية nonce أو بصمة مدعومة. يحقق nonce عدم التوقع وشروط كل رد؛ فلا يصلح ثابت عام من درس. لـ frame-ancestors دلالته ولا يرث جميع قواعد الافتراض تلقائياً. اربط السياسة بالحاجة الفعلية للموارد واختبر سير المستخدم العادي قبل الإنفاذ، لا مجرد غياب تحذير على صفحة واحدة.

http حقول سياسة رد متصفح غير تشغيلية
Content-Security-Policy: default-src 'self'; object-src 'none'; base-uri 'none'; frame-ancestors 'none'
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin

تصف الحقول عقد موارد افتراضياً واحداً ولا تثبت أو ترسل. قد تمنع السلوك الشرعي في تطبيق آخر. لا يولد المثال nonce أو يختبر دعم المتصفح أو يثبت حماية XSS كاملة.

ميّز الإبلاغ من المنع

تساعد CSP بنمط report-only في رصد المخالفات دون فرض المنع المقابل. لا تثبت أن الإنفاذ سيحفظ كل مهمة، وقد تنقص التقارير أو تحوي URL حساساً. حدد الجمع والخصوصية والوصول والاحتفاظ. حقق في المورد المشروع بدلاً من توسيع السماح غير الآمن حتى تسكت الطرفية. اختبر الإيجابي والسلبي بمتصفح مفوض. قد يعني غياب التقرير عطب الجمع لا غياب المخالفة. احفظ السياسة والحزمة المحددة مع الدليل حتى يعرف المراجع ما الذي رُصد فعلاً.

افحص التوجيهات دون محاكاة متصفح

يفك المثال الخالص سياسة ثابتة صغيرة لقاموس تعليمي ويفحص توجيهات محددة. ليس محلل CSP كاملاً ولا يحاكي التكرار أو قواعد المتصفح أو الأسبقية أو إنفاذ الشبكة. ينتج الحقيقي بإعداد إطار أو خادم مصان ويُفحص. يكشف المحلي تغيراً عرضياً في سجل الصف ولا يصدق نشراً. افصل نص السياسة وموضع الرد والدعم والسلوك الفعلي، ولا تشغل فاحصاً خارجياً أو تغير موقعاً مهيأً للتحقق من المثال. تبقى حدود هذه المقارنة النصية معلنة.

python فحص كامل لشكل سياسة ثابتة
policy = "default-src 'self'; object-src 'none'; base-uri 'none'; frame-ancestors 'none'"
directives = {}
for part in policy.split(";"):
    name, *values = part.strip().split()
    directives[name] = values
assert directives["object-src"] == ["'none'"]
assert directives["frame-ancestors"] == ["'none'"]

يعمل محلياً على نص مخترع ويفحص قيمتين معلنتين فقط دون إرسال رأس أو تقرير. ليس محللاً مكتملاً للمواصفة أو اختبار أمان متصفح.

راجع الرؤوس الأخرى وأثر التراجع منفصلين

قد يقوي HSTS استخدام HTTPS وفق نطاقه، لكن الإعداد الطويل وشمول التفرعات وpreload تحتاج مراجعة تشغيل وتعاف. يتطلب منع تخمين MIME أنواعاً صحيحة، وتوافق سياسة الإحالة الخصوصية والتكامل. للعزل بين الأصول موارد وتوافق إضافيان فلا يفعل عميانياً. تحقق من الرؤوس بكل فئات الرد ذات الصلة، لا HTML ناجحاً فقط. يشرح القرار الغرض والسلوك المشروع ودليل الإنفاذ والحدود ومالك التغيير عبر الزمن، دون تحويل مجموعة رؤوس إلى ادعاء أمان شامل.

الأخطاء الشائعة وإصلاحها

يسمى report-only حماية مفروضة

لماذا يحدث؟
اختلط الرصد بالمنع.
كيف تصلحه؟
حدد النمط وافحص المفروض مستقلاً.
كيف تتجنب تكراره؟
تتبّع النمط مع الإصدار.

تكسر سياسة منسوخة الوظيفة العادية

لماذا يحدث؟
لم تراجع الموارد والتكامل.
كيف تصلحه؟
حدد سياسة مدعومة واختبر المهمة.
كيف تتجنب تكراره؟
راجع الإضافة لا تمنح استثناءً عاماً.

يعني غياب التقرير غياب المشكلة

لماذا يحدث؟
افترض اكتمال الجمع.
كيف تصلحه؟
تحقق من الجمع والتغطية.
كيف تتجنب تكراره؟
افصل الغائب والناجح.

اختبر فهمك

1. لماذا لا يصلح nonce ثابت عام للإنتاج؟

اعرض الحل المشروح

تعتمد الآلية على حداثة وعدم توقع موثقين داخل سياسة الرد، ولا يوفرهما ثابت عام متكرر. استخدم آلية الإطار المدعومة وتحقق من الربط بين الرأس والمورد المقصود. لا تجعل قيمة صالحة لشرح الصياغة مادة حماية فعلية.

2. يصح الرأس بالرئيسية ويغيب عن الخطأ. ماذا تراجع؟

اعرض الحل المشروح

راجع مسار الرد كاملاً وترتيب الوسيط وسلوك الوكيل وفئات الاستجابة. تحقق من انطباق السياسة حيث تلزم دون كشف محتوى خطأ حساس. لا تثبت الرئيسية الناجحة تغطية التطبيق كله أو نجاح السياسة في جميع مسارات الفشل.

أهم ما تعلمته

  • تقيد الرؤوس سلوكاً متصفحياً محدداً.
  • يختلف دليل الرصد والإنفاذ.
  • تحتاج السياسة ملكية توافق وتعاف.

المراجع الرسمية