يمكن للمطوّرين الذين يستخدمون سياسة COEP الآن تضمين إطارات iframe تابعة لجهات خارجية لا تستخدم سياسة COEP نفسها.
سبب الحاجة إلى سياسة أداة تضمين المحتوى من مصادر خارجية
تزيد بعض واجهات برمجة التطبيقات للويب من خطر هجمات قناة جانبية، مثل هجوم
Spectre. للحدّ من هذا الخطر، تقدّم المتصفّحات بيئة معزولة تستند إلى الموافقة تُعرف باسم حظر الوصول من نطاقات أخرى، ويتطلّب ذلك، من بين أمور أخرى، تفعيل سياسة COEP. يتيح ذلك للمواقع الإلكترونية استخدام ميزات مميّزة،
بما في ذلك
SharedArrayBuffer
،
performance.measureUserAgentSpecificMemory()
،
و
الموقّتات العالية الدقة بدقة أعلى.
لتفعيل ميزة العزل من مصادر متعددة، يجب أن ترسل المواقع الإلكترونية علامتَي HTTP التالية:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
التحديات المتعلّقة بتفعيل سياسة COEP
على الرغم من أنّ عزل مصادر البيانات من مصادر مختلفة يمنح صفحات الويب أمانًا أفضل وإمكانية تفعيل ميزات فعّالة، يمكن أن يكون نشر سياسة COEP صعبًا. يُعدّ أحد أكبر الصعوبات هو أنّ جميع إطارات iframe من مصادر مختلفة يجب أن تنشر أيضًا ملفَي COEP وCORP. ولن يحمّل المتصفّح إطارات iframe التي لا تتضمّن هذين الملفَّين.
وعادةً ما يتم عرض أطر iframe من قِبل جهة خارجية قد لا يكون من السهل عليها نشر إطار عمل COEP.
استخدام إطار iframe مجهول الهوية
وهنا يأتي دور إطار iframe المجهول الهوية. من خلال إضافة سمة anonymous
إلى العنصر <iframe>
، يتم تحميل إطار iframe من قسم تخزين مؤقت مختلف، ولا يخضع بعد ذلك لقيود COEP.
مثال:
<iframe anonymous src="https://example.com">
يتم إنشاء إطار iframe في سياق عابر جديد ولا يمكنه الوصول إلى أي من
ملفات تعريف الارتباط المرتبطة بالموقع الإلكتروني من المستوى الأعلى. تبدأ هذه العملية من جرة ملفّات تعريف الارتباط الفارغة. وبالمثل، تعمل واجهات برمجة تطبيقات التخزين، مثل
LocalStorage
و
CacheStorage
و
IndexedDB
وما إلى ذلك، على تحميل البيانات وتخزينها في القسم المؤقت الجديد. تنطبق القسمة
على المستند الحالي من المستوى الأعلى ومصدر إطار iframe. سيتم محو سعة التخزين
بعد تفريغ المستند من المستوى الأعلى.
لا تخضع إطارات iframe المجهولة لقواعد تضمين COEP. ولا يزال هذا الإجراء آمنًا، لأنّه يتم تحميلها من سياق فارغ جديد في كل مرة. وسيتم تحميلها بدون تخصيص بياناتهم. ولا تحتوي هذه التقارير إلا على بيانات عامة، وهي ليست ذات قيمة لمهاجم.
عرض توضيحي
يمكنك الاطّلاع على إطار iframe مجهول الهوية على الرابط: https://anonymous-iframe.glitch.me/
التسجيل في فترة تجريبية للإصدار الأصلي
لضمان أنّ إطارات iframe المجهولة الهوية تساعد المطوّرين في استخدام ميزة "عزل المَصادر المتعددة"، سنوفّرها في Chrome من الإصدار 106 إلى الإصدار 108 كميزة تجريبية في مرحلة اختبار الإصدارات العلنية.
سجِّل في الفترة التجريبية الأصلية لتفعيل موقعك الإلكتروني لاستخدام ملفّات div المجهولة الهوية:
- اطلب الحصول على رمز مميّز للموقع المصدر.
- استخدِم الرمز المميّز بإحدى الطريقتَين التاليتَين:
- في ملف HTML:
html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
- في JavaScript:
js const meta = document.createElement('meta'); meta.httpEquiv = 'Origin-Trial'; meta.content = 'TOKEN_GOES_HERE'; document.head.append(meta);
- في عناوين HTTP:
text Origin-Trial: TOKEN_GOES_HERE
- في ملف HTML:
- أضِف إطار iframe مجهول الهوية إلى صفحتك:
html <iframe anonymous src="https://example.com">
إذا كانت لديك أي ملاحظات حول هذه الميزة، يُرجى الإبلاغ عن مشكلة في مستودع GitHub.
مرحلة التجربة والتقييم من جهة خارجية
تتوفّر مرحلة التجربة والتقييم أيضًا للنصوص البرمجية التابعة لجهات خارجية. ويعني ذلك أنّه يمكن تفعيلها من خلال النصوص البرمجية المضمّنة في الصفحة.
اطّلِع على مزيد من المعلومات حول كيفية التسجيل في فترة تجريبية لجهة خارجية.
الأسئلة الشائعة
هل ستتوفّر هذه الميزة في متصفّحات أخرى؟
- طلب Mozilla للوظيفة: في انتظار المراجعة
- طلب Webkit للموقع: ما مِن إشارة
- علامة W3C طلب موضع الإعلان: مُلبَّى
هل يتمّ تداخل إطارات iframe داخل <iframe anonymous>
مجهول الهوية؟
نعم. يتم اكتسابها. بعد أن يصبح إطار iframe مجهول الهوية، ينطبق ذلك على جميع إطارات iframe
في الشجرة الفرعية بأكملها حتى بدون سمة anonymous
.
هل النوافذ المنبثقة التي يتم إنشاؤها من <iframe anonymous>
مجهولة الهوية أيضًا؟
يتم فتح النوافذ المنبثقة كما لو تم ضبط القيمة noopener
. ويتم إنشاؤها من سياق جديد
عادي من المستوى الأعلى، وهي ليست مجهولة الهوية. ولا يمكنه التواصل مع الإطار المضمّن
غير المحدد الهوية.
الموارد
- جعل موقعك الإلكتروني "معزولًا عن النطاقات الأخرى" باستخدام سياستَي COOP وCOEP
- سبب الحاجة إلى "حظر الوصول من نطاقات أخرى" للحصول على ميزات فعّالة
- دليل تفعيل ميزة "حظر الوصول من نطاقات أخرى"
- تعديلات SharedArrayBuffer في الإصدار 88 من Chrome لنظام التشغيل Android والإصدار 92 من Chrome لأجهزة الكمبيوتر المكتبي
- تحميل موارد من مصادر متعددة بدون استخدام رؤوس CORP باستخدام
COEP: credentialless