يمكن الآن للمطوّرين الذين يستخدمون بروتوكول 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