بدون بيانات اعتماد Iframe: يمكنك تضمين إطارات iframe بسهولة في بيئات COEP.

Arthur Sonzogni
Arthur Sonzogni

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

الأسئلة الشائعة

هل ستتوفّر هذه الميزة في متصفّحات أخرى؟

هل <iframe> مُدمج داخل <iframe credentialless> بدون بيانات اعتماد؟

نعم. وهي مكتسَبة. بعد أن يصبح إطار iframe غير مزوّد ببيانات اعتماد، ينطبق ذلك على جميع إطارات iframe في الشجرة الفرعية بأكملها حتى بدون سمة credentialless.

هل النوافذ المنبثقة التي تم إنشاؤها من <iframe credentialless> لا تتطلّب بيانات اعتماد أيضًا؟

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

كيف يمكن رصد أنّه تم تضمين المستند في إطار iframe بدون بيانات اعتماد؟

تكون القيمة window.credentialless صحيحة داخل إطار iframe لا يتضمّن بيانات اعتماد، وتكون خطأ في الحالات الأخرى. تكون قيمته undefined في متصفّح ويب لا يتيح استخدام <iframe credentialless>.

الموارد