وضع الحماية لإطارات iframe وسياسة الأذونات
تقييد المحتوى المضمّن باستخدام sandbox وPermissions-Policy
وضع الحماية لإطارات iframe وسياسة الأذونات درس مجاني في HTML Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في HTML Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة HTML Academy 4 دروس في المجموع.
لماذا نستخدم إطارات iframe مع sandbox؟
يجب ألا يمتلك المحتوى غير الموثوق داخل iframe، مثل أدوات الجهات الخارجية ومعاينات HTML التي يرسلها المستخدم والألعاب المضمّنة، كامل إمكانات المتصفح. تقيّد السمة sandbox ما يستطيع iframe فعله، ما يقلل الضرر إذا اتضح أنه خبيث.
sandbox فارغ = أقصى تقييد
يطبّق <iframe sandbox src="..."> جميع القيود من دون قيمة: لا برامج نصية، ولا نماذج، ولا نوافذ منبثقة، ولا تنقّل على مستوى الصفحة، ولا مكونات إضافية، ويُعامل على أنه مصدر فريد. استخدم هذا كنقطة بداية، ثم أضف فقط ما يحتاج إليه المحتوى المضمّن.
إضافة الإمكانات
تعيد رموز sandbox تفعيل إمكانات محددة: تسمح sandbox="allow-scripts allow-same-origin" بتنفيذ البرامج النصية والوصول إلى المصدر نفسه. يخفف كل رمز قيدًا واحدًا؛ لذلك اجمع الحد الأدنى من الرموز التي يحتاج إليها iframe فعليًا.
<iframe sandbox="allow-scripts allow-same-origin" src="https://embed.example.com/widget"></iframe>الرموز الشائعة
تفعّل allow-scripts لغة JS. وتفعّل allow-forms إرسال النماذج. وتفعّل allow-popups استخدام window.open. وتمنع allow-same-origin معاملة iframe كمصدر فريد، وهي مطلوبة لاستخدام localStorage. ويسمح allow-top-navigation بالتنقّل في النافذة الأصلية.
التركيبة الخطرة
يمنح الجمع بين allow-scripts وallow-same-origin لإطار iframe تستضيفه أنت أيضًا وصولًا كاملًا إلى مصدرك — بما في ذلك القدرة على إزالة sandbox الخاص به. اجمع بينهما للمحتوى الموثوق فقط؛ أما المحتوى غير الموثوق، فاحذف allow-same-origin.
سياسة الأذونات
تتحكم Permissions Policy، التي كانت تُعرف سابقًا باسم Feature Policy، في واجهات برمجة التطبيقات في المتصفح، مثل الكاميرا والميكروفون وتحديد الموقع الجغرافي وملء الشاشة والتشغيل التلقائي، التي يمكن للصفحة وإطارات iframe فيها استخدامها. اضبطها على الصفحة الأصلية: تمنع Permissions-Policy: geolocation=() تحديد الموقع الجغرافي في كل مكان.
منح إذن لكل iframe
تتجاوز السمة allow في iframe سياسة الصفحة الأصلية لذلك الإطار: تسمح <iframe allow="camera; microphone"> باستخدام واجهتي API هاتين في iframe حتى إذا كانت السياسة الافتراضية للصفحة الأصلية تمنعهما.
<iframe
src="https://video-call.example.com"
allow="camera; microphone; fullscreen"
sandbox="allow-scripts allow-same-origin">
</iframe>سرد الأذونات
المواصفات قائمة متطورة باستمرار — camera وmicrophone وgeolocation وaccelerometer وgyroscope وmagnetometer وpayment وusb وmidi وfullscreen وautoplay وpicture-in-picture، إلى جانب عشرات الميزات الأخرى. راجع القائمة وامنع صراحةً كل ما لا تحتاج إليه صفحتك.
الإبلاغ عن انتهاكات السياسة
تُبلغ Permissions-Policy عن الانتهاكات إلى نقطة نهاية مهيّأة، مثل report-uri في CSP. استخدم ذلك أثناء عملية ترحيل: فعّل سياسة صارمة، وراقب ما يتعطل، ثم خففها تدريجيًا وبطريقة مدروسة للميزات المشروعة.
عزل المصدر
بالنسبة إلى الصفحات الحساسة، اضبط Cross-Origin-Opener-Policy: same-origin وCross-Origin-Embedder-Policy: require-corp. يعزل ذلك الصفحة عن النوافذ من مصادر مختلفة، ويحميها من هجمات التوقيت على نمط Spectre، ويمكّن SharedArrayBuffer.
الدفاع متعدد الطبقات
تعمل sandbox وPermissions Policy وCSP وCOOP/COEP معًا كطبقات حماية. تحمي كل واحدة منها من فئة مختلفة من الهجمات. إن تضمين محتوى من جهات خارجية محفوف بالمخاطر إلى حد لا تكفي معه أي وسيلة تخفيف واحدة — فاجمع بينها حتى يعالج أحدها أي تجاوز لوسيلة أخرى.
الاختبار
استخدم لوحتي Network وIssues في Chrome DevTools لكشف انتهاكات sandbox والأذونات. تكون انتهاكات كثيرة صامتة، إذ تعيد واجهة API القيمة undefined أو ترفض الـ promise فحسب؛ وتساعد نقاط الإبلاغ الصريحة في اكتشافها في بيئة الإنتاج.
اختبار المعرفة
لماذا يمكن أن تكون التركيبة sandbox="allow-scripts allow-same-origin" خطرة على iframe مستضاف على مصدرك أنت؟
الملخص
فعّل sandbox لإطارات iframe افتراضيًا، وأضف فقط الرموز التي يحتاج إليها المحتوى. تجنّب allow-scripts+allow-same-origin مع المحتوى غير الموثوق. استخدم Permissions Policy لمنع واجهات API القوية على مستوى الموقع، واستخدم سمة allow في iframe لمنح الاستثناءات. ادمج ذلك مع CSP وCOOP/COEP لتحقيق دفاع متعدد الطبقات.
تعلم HTML مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 40
- الدروس
- 159
الأسئلة الشائعة
هل درس «وضع الحماية لإطارات iframe وسياسة الأذونات» مجاني؟
نعم — نص درس «وضع الحماية لإطارات iframe وسياسة الأذونات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة HTML Academy، انتقل إلى CoddyKit PRO. تتضمن دورة HTML Academy 4 دروس في المجموع.
ماذا ستتعلم في «وضع الحماية لإطارات iframe وسياسة الأذونات»؟
تقييد المحتوى المضمّن باستخدام sandbox وPermissions-Policy تتمرن على HTML Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ HTML Academy؟
لا تُشترط خبرة سابقة. HTML Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «وضع الحماية لإطارات iframe وسياسة الأذونات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس HTML Academy هذا؟
نعم. كل درس في HTML Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- Content Security Policy وmeta http-equiv
- XSS عبر innerHTML وكيفية منعه
- وضع الحماية لإطارات iframe وسياسة الأذونات
- HTTPS وسلامة الموارد الفرعية