يمكن للمطوّرين الذين يستخدمون سياسة COEP الآن تضمين إطارات iframe التابعة لجهات خارجية والتي لا تستخدم سياسة COEP نفسها.
يتم تفعيل ميزة "الإطارات المضمّنة بدون بيانات اعتماد" تلقائيًا من الإصدار 110 من Chrome. ويحلّ هذا الإجراء المشكلة الأكثر شيوعًا التي يواجهها المطوّرون الذين يعملون مع سياسة المُضمِّن من مصادر متعددة (COEP)، وهي تضمين إطارات iframe التابعة لجهات خارجية لا تضبط سياسة COEP.
سبب الحاجة إلى سياسة أداة تضمين المحتوى من مصادر خارجية
تزيد بعض واجهات برمجة التطبيقات للويب من خطر هجمات قناة جانبية، مثل Spectre. للتخفيف من هذا الخطر، يوفّر المتصفّحات بيئة معزولة تستند إلى الموافقة تُعرف باسم حظر الوصول من نطاقات أخرى، ما يتطلّب نشر سياسة COEP. تسمح ميزة العزل بين مصادر البيانات للمواقع الإلكترونية باستخدام ميزات مميّزة، بما في ذلك SharedArrayBuffer
وperformance.measureUserAgentSpecificMemory()
والموقّتات العالية الدقة بدقة أفضل.
لتفعيل ميزة "عزل المواقع الإلكترونية من مصادر مختلفة"، يجب أن ترسل المواقع الإلكترونية عناوين HTTP التالية:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
يمكن أيضًا استخدام COEP:credentialless كبديل لـ require-corp
. راجِع المستندات للحصول على مزيد من التفاصيل.
التحديات المتعلّقة بتفعيل سياسة COEP
على الرغم من أنّ ميزة "حظر الوصول من نطاقات أخرى" توفّر صفحات الويب مستوى أمان أفضل وإمكانية تفعيل ميزات فعّالة، يمكن أن يكون نشر سياسة COEP صعبًا. يتمثل أحد أكبر التحديات في أنّ جميع إطارات iframe التي تنتقل بين مصادر مختلفة يجب أن تنشر COEP وCORP. ولن يحمّل المتصفّح إطارات iframe التي لا تتضمّن هذين العنوانَين.
استخدام إطار iframe بدون بيانات اعتماد
نحن بصدد طرح <iframe credentialless>
للمساعدة في تضمين إطارات iframe التابعة لجهات خارجية والتي لا تضبط سياسة COEP. من خلال إضافة سمة credentialless
إلى عنصر <iframe>
، يتم تحميل إطار iframe من سياق مختلف فارغ. على وجه الخصوص، يتم تحميله بدون ملفات تعريف الارتباط. يتيح ذلك إزالة القيود المفروضة على سياسة COEP.
مثال:
<iframe credentialless src="https://example.com">
يتم إنشاء عنصر iframe هذا في سياق عابر جديد ولا يمكنه الوصول إلى أي من ملفات تعريف الارتباط المرتبطة بالموقع الإلكتروني من المستوى الأعلى. بدلاً من ذلك، تبدأ بجرة كوكيز فارغة. وبالمثل، تعمل واجهات برمجة التطبيقات لمساحة التخزين، مثل LocalStorage وCacheStorage وIndexedDB وما إلى ذلك، على تحميل البيانات وتخزينها في القسم المؤقت الجديد. يتم تحديد نطاق التقسيم لكلٍ من المستند الحالي من المستوى الأعلى ومصدر إطار iframe. يتم محو كل مساحة التخزين هذه بعد تفريغ المستند على المستوى الأعلى.
لا تخضع إطارات iframe التي لا تستخدم بيانات اعتماد لقواعد تضمين COEP. تظل هذه الإعلانات آمنة: نظرًا لأنّه يتم تحميلها من سياق جديد فارغ في كل مرة، من المفترض ألا تحتوي على بيانات مخصّصة، وهي ما يبحث عنه المهاجمون. إذا كان عنصر iframe يتضمّن بيانات عامة فقط، لن يكون ذا قيمة لمهاجم.
عرض توضيحي
يمكنك الاطّلاع على عرض توضيحي لإطار iframe بدون بيانات اعتماد.
الأسئلة الشائعة
هل ستتوفّر هذه الميزة في متصفّحات أخرى؟
- طلب Mozilla للحصول على الوظيفة: في انتظار المراجعة
- طلب Webkit للموضع: ما مِن إشارة
- علامة W3C طلب الموضع: مُرضٍ
هل <iframe>
مُدمج داخل <iframe credentialless>
بدون بيانات اعتماد؟
نعم. وهي مكتسَبة. بعد أن يصبح إطار iframe غير مزوّد ببيانات اعتماد، ينطبق ذلك على جميع إطارات iframe في الشجرة الفرعية بأكملها حتى بدون سمة credentialless
.
هل النوافذ المنبثقة التي تم إنشاؤها من <iframe credentialless>
لا تتطلّب بيانات اعتماد أيضًا؟
يتم فتح النوافذ المنبثقة كما لو تم ضبط القيمة noopener
. ويتم إنشاؤها في سياق جديد عادي من المستوى الأعلى، وهي ليست بدون بيانات اعتماد. لا يمكنه التواصل مع إطار iframe الذي لا يستخدم بيانات الاعتماد.
كيف يمكن رصد أنّه تم تضمين المستند في إطار iframe بدون بيانات اعتماد؟
تكون القيمة window.credentialless
صحيحة داخل إطار iframe لا يتضمّن بيانات اعتماد، وتكون خطأ في الحالات الأخرى. تكون قيمته undefined
في متصفّح ويب لا يتيح استخدام <iframe credentialless>
.
الموارد
- جعل موقعك الإلكتروني "معزولاً عن مصادر متعددة" باستخدام إطارَي عمل COOP وCOEP
- سبب الحاجة إلى "حظر الوصول من نطاقات أخرى" للحصول على ميزات فعّالة
- دليل لتفعيل ميزة "حظر الوصول من نطاقات أخرى"
- تعديلات SharedArrayBuffer في الإصدار 88 من Chrome لنظام التشغيل Android والإصدار 92 من Chrome لأجهزة الكمبيوتر المكتبي
- تحميل موارد من مصادر متعددة بدون استخدام رؤوس CORP باستخدام
COEP: credentialless
- IFrame credentialless - Web security | MDN