غالبًا ما لا تتضمن الموارد المشتركة المصدر التي تقدمها جهات خارجية عناوين CORP ملائمة. وإذا كان من الممكن طلبها بدون بيانات الاعتماد، يمكنك الآن تفعيل ميزة عزل المحتوى من نطاقات أخرى عن طريق وضع علامة عليها على أنّها كذلك.
لقد شحننا القيمة الجديدة لسياسة تضمين الموارد المتعدّدة المصادر (COEP)
credentialless
التي تسمح للمتصفح بتحميل الموارد المتعدّدة المصادر التي
لا تستخدم سياسة الموارد المتعدّدة المصادر (CORP)، من خلال إرسال طلب بدون
بيانات اعتماد، مثل ملفات تعريف الارتباط. يساعد هذا المطورين على تبني
العزلة المشتركة المصدر بسهولة أكبر.
أهمية حظر الوصول من نطاقات أخرى
تزيد بعض واجهات برمجة تطبيقات الويب من مخاطر هجمات القنوات الجانبية، مثل
Spectre. للحدّ من هذه المخاطر، توفّر المتصفِّحات بيئة معزولة تستند إلى الموافقة تُسمى عزل المحتوى من مصادر متعددة. في حال عزل المحتوى من نطاقات أخرى، يمكن لصفحة الويب استخدام ميزات خاصة تشمل
SharedArrayBuffer
وperformance.measureUserAgentSpecificMemory()
والموقّتات العالية الدقة ذات الدقة الأفضل
مع عزل المصدر عن المصادر الأخرى ما لم يفعّلوا الميزة.
يجب أن ترسل صفحة الويب عنوانَي HTTP لتفعيل ميزة العزل المشترك المصدر:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
مع حظر الوصول من نطاقات آخرى، يجب عرض جميع الموارد من مصادر متعددة من خلال بروتوكول CORS
أو ضبط عنوان Cross-Origin-Resource-Policy
ليتم تحميلها.
تحديات تفعيل حظر الوصول من نطاقات أخرى
وعلى الرغم من أنّ ميزة "عزل المحتوى من مصادر متعددة" توفّر لصفحات الويب مستوى أمان أفضل وقدرة على تفعيل ميزات فعّالة، قد يكون نشرها صعبًا. وأحد أكبر التحديات هو شرط تفعيل سياسة CORS أو CORP لجميع الموارد المتعددة المصادر. لن يحمّل المتصفّح الموارد التي لا تتضمّن هذه العناوين في صفحة تم عزلها عن مصادر متعددة.
وعادةً ما يتم عرض هذه الموارد المتعددة المصادر من قِبل جهات خارجية قد لا يكون من السهل إضافة العناوين اللازمة لها.
ولكن ماذا لو عرفنا أن المورد آمن بما يكفي للتحميل؟ في الواقع، الموارد الوحيدة المعرّضة للخطر هي تلك التي يتم طلبها باستخدام بيانات الاعتماد، لأنّها من المحتمل أن تتضمّن معلومات حساسة لا يستطيع المهاجم تحميلها بأنفسهم. يعني هذا أن الموارد التي يمكن طلبها بدون بيانات الاعتماد تكون متاحة للجميع وتكون آمنة للتحميل.
credentialless
في مهمة الإنقاذ
هذا ما يأتي دور COEP: credentialless
. credentialless
هي قيمة
جديدة لعنوان Cross-Origin-Embedder-Policy
. وعلى غرار require-corp
، يمكنها
تفعيل ميزة العزل من مصادر متعددة، ولكن بدلاً من طلب عنوان CORP:cross-origin
لطلبات حظر المحتوى من مصادر متعددة، يتم إرسالها بدون بيانات اعتماد (مثل ملفات تعريف الارتباط).
بدلاً من ذلك، ستتمكّن من تفعيل ميزة العزل المشترك المصدر باستخدام العنوانين التاليين:
Cross-Origin-Embedder-Policy: credentialless
Cross-Origin-Opener-Policy: same-origin
يعني ذلك أنّ الخادم المطلوب من مصادر متعددة لن يتمكّن من الردّ باستخدام مورد حساس، ويمكن لمقدِّم الطلب أن يفترض دائمًا أنّ الاستجابة لا تحتوي إلا على معلومات متاحة للجميع.
ويتماشى هذا أيضًا مع خطة المتصفّحات بشأن الإيقاف التدريجي لملفات تعريف الارتباط التابعة لجهات خارجية.
الخصائص الديموغرافية
يمكنك تجربة خيارات متنوعة للعناوين في هذا العرض التوضيحي: https://cross-origin-isolation.glitch.me
الأسئلة الشائعة
هل يمكنني إرسال طلب معتمَد ضمن بيئة credentialless
؟
وبالتأكيد، على حساب تغيير وضع الطلب لاشتراط التحقّق من CORS
على الاستجابة. بالنسبة إلى علامات HTML مثل <audio>
و<img>
و<link>
و<script>
و<video>
، ما عليك سوى إلحاق crossorigin="use-credentials"
صراحةً لإبلاغ المتصفّح
بإرسال طلبات معتمَدة.
على سبيل المثال، حتى إذا احتوى مستند على https://www.example.com
على
عنوان Cross-Origin-Embedder-Policy: credentialless
، سيرسل <img
src="https://images.example.com/avatar.png" crossorigin="use-credentials">
طلبًا معتمدًا.
بالنسبة إلى fetch()
API، يمكن استخدام request.mode = 'cors'
.
إذا كان COEP: credentialless
، كيف لا يزال COEP: require-corp
مفيدًا لموقعي الإلكتروني؟
لا يتطلّب COEP: require-corp
منك تبديل وضع الطلب يدويًا إلى
CORS إذا كانت ملفات تعريف الارتباط مطلوبة لبعض الموارد الفرعية المتعددة المصادر.
هل يمكنني أيضًا تحميل إطارات iframe من مصادر متعددة بدون عناوين خاصة ضمن بيئة credentialless
؟
لا، لا يزال تحميل إطارات iframe من مصادر متعددة ضمن بيئة credentialless
يتطلّب الشروط نفسها المستخدَمة في require-corp
. يجب عرض مستندات iframe باستخدام عنوانين:
-
Cross-Origin-Embedder-Policy: credentialless
(أوrequire-corp
) Cross-Origin-Resource-Policy: cross-origin
والخبر السار هو أنّ هناك نقاشًا مستمرًا حول السماح بتحميل إطارات iframe من مصادر متعددة بدون هذه العناوين من خلال منح إطارات iframe crossorigin="anonymous"
.
سيسمح هذا الإجراء بتحميل إطارات iframe من مصادر متعددة بدون عناوين ولكن بدون بيانات اعتماد.
هل ستعتمد هذه الميزة على متصفّحات أخرى؟
- مشكلة في التتبّع في Firefox
- طلب Webkit لتحديد الموضع: لا تتوفّر إشارة
- طلب الحصول على موضع في W3C TAG: في انتظار المراجعة
الميزات التالية
هناك تحديثان إضافيان قادمان للتخفيف من التحديات الأخرى المتعلقة بالعزل المشترك المصدر:
إنّ المستخدمين الذين تسجّلوا في مرحلة التجربة والتقييم في Chrome لتمديد تغيير SharedArrayBuffer بسبب العقبات المذكورة أعلاه قد يتساءلون عن موعد الإغلاق. لقد أعلنّا في الأصل أنّه سيتم إنهاؤها في الإصدار Chrome 96، لكننا قررنا تأجيلها إلى Chrome 106.
المراجِع
- جعل موقعك الإلكتروني "معزولاً" من نطاقات أخرى باستخدام أداة COOP وCOEP
- سبب احتياجك إلى استخدام ميزات "حصرية من مصادر متعددة" للاستفادة من ميزات فعّالة
- دليل تفعيل حظر الوصول من نطاقات أخرى
- تحديثات SharedArrayBuffer في الإصدار 88 من متصفّح Chrome لنظام التشغيل Android والإصدار 92 من متصفّح Chrome لأجهزة الكمبيوتر المكتبي
تصوير مارتن آدمز على موقع Unسبلاش