تفاعلات النوافذ المنبثقة الآمنة باستخدام المواقع المحظورة

يمكنك الحصول على عزل بين مصادر مختلفة وحماية من عمليات التسرب في جميع المواقع الإلكترونية أثناء التفاعل مع النوافذ المنبثقة.

Arthur Hemery
Maud Nalpas
Maud Nalpas

تتوفّر قيمة جديدة لسمة السياسة المحدّدة لفتح المستندات المشتركة المصدر (COOP): restrict-properties. ويقدّم هذا الإجراء مزايا أمنية ويسهّل استخدام عزل مصادر البيانات مع السماح لموقعك الإلكتروني بالتفاعل مع النوافذ المنبثقة التابعة لجهات خارجية للدفعات أو مصادقة المستخدمين أو حالات الاستخدام الأخرى.

لبدء تجربة restrict-properties، عليك المشاركة في مرحلة التجربة والتقييم اعتبارًا من الإصدار 116 من Chrome.

أسباب استخدام restrict-properties

هناك حالتا استخدام رئيسيتان لـ restrict-properties:

منع تسرُّب المعلومات في جميع المواقع الإلكترونية بدون إيقاف البث

يمكن لأي موقع إلكتروني فتح تطبيقك في نافذة منبثقة والحصول على إشارة إليه تلقائيًا.

ويمكن لموقع إلكتروني ضار الاستفادة من ذلك لتنفيذ هجمات مثل عمليات التسريب على مستوى المواقع الإلكترونية. للتخفيف من هذه المخاطر، يمكنك استخدام الرأس Cross-Origin-Opener-Policy (COOP).

حتى الآن، كانت خياراتك في ما يتعلّق بـ Cross-Origin-Opener-Policy محدودة. يمكنك اتّباع أحد الإجراءَين التاليَين:

  • اضبط same-origin, الذي يحظر جميع التفاعلات بين مصادر مختلفة مع النوافذ المنبثقة.
  • اضبط القيمة same-origin-allow-popups التي تحظر جميع التفاعلات بين مصادر مختلفة التي تفتح موقعك الإلكتروني في نافذة منبثقة.
  • اضبط القيمة unsafe-none التي تسمح بجميع التفاعلات بين مصادر مختلفة مع النوافذ المنبثقة.

وقد أدّى ذلك إلى استحالة فرض ميزة "التعاون في التسويق" على المواقع الإلكترونية التي يجب فتحها في نافذة منبثقة والتفاعل مع النافذة المنبثقة التي فتحتها. وقد أدّى ذلك إلى عدم حماية حالات الاستخدام الرئيسية، مثل تسجيل الدخول باستخدام حساب واحد والدفعات، من عمليات التسريب على مستوى المواقع الإلكترونية.

يحلّ Cross-Origin-Opener-Policy: restrict-properties هذه المشكلة.

في restrict-properties، لا تتوفّر المواقع التي يمكن استخدامها لعدّ اللقطات وغيرها من هجمات التسريب على مستوى الموقع الإلكتروني، ولكن يُسمح بالاتصال الأساسي بين النوافذ من خلال postMessage وclosed.

ويؤدي ذلك إلى تحسين أمان الموقع الإلكتروني مع الحفاظ على حالات الاستخدام الرئيسية. على سبيل المثال:

  • إذا كنت تقدّم خدمة في نافذة منبثقة، سيحميك الإعداد Cross-Origin-Opener-Policy: restrict-properties من مجموعة من هجمات التسريبات على مستوى الموقع الإلكتروني. سيظل بإمكانك فتح جميع الصفحات التي كان بإمكانك فتحها في السابق.
  • إذا كنت بحاجة إلى الوصول إلى نافذة منبثقة من مصدر مختلف، سيؤدي الإعداد Cross-Origin-Opener-Policy: restrict-properties إلى حماية موقعك الإلكتروني بالطريقة نفسها من احتساب إطارات iframe. ستتمكّن من فتح المجموعة نفسها من الپامب-آب التي يمكنك فتحها اليوم.
  • إذا ضبط كلّ من المُفتتح والمُفتتح له العنوان، وكانت الصفحتان من مصادر مختلفة، سيعمل العنوان بالطريقة نفسها كما لو ضبط أحدهما العنوان. إذا كانت من المصدر نفسه، يتم منح إذن بالوصول الكامل.

جعل موقعك الإلكتروني يحظر الوصول من نطاقات أخرى

سبب الحاجة إلى عزل المحتوى المضمّن من مصادر خارجية

تزيد بعض واجهات برمجة التطبيقات للويب من خطر هجمات قناة جانبية، مثل هجوم Spectre. للحدّ من هذا الخطر، يوفّر المتصفّحات بيئة معزولة تستند إلى الموافقة تُعرف باسم حظر الوصول من نطاقات أخرى. في حالة استخدام وضع "مفصَّل عن جميع النطاقات"، يمكن لصفحة الويب استخدام ميزات مميّزة، بما في ذلك SharedArrayBuffer وperformance.measureUserAgentSpecificMemory() والموقّتات العالية الدقة بدقة أفضل، مع عزل المصدر عن مصادر أخرى ما لم يتم تفعيلها.

حتى الآن، لاستخدام واجهات برمجة التطبيقات هذه، كان عليك ضبط Cross-Origin-Opener-Policy: same-origin. ومع ذلك، سيؤدي ذلك إلى إيقاف أي عملية منبثقة من مصادر متعددة قد تحتاج إليها، مثل تسجيل الدخول المُوحَّد و"الدفعات".

يمكن الآن استخدام Cross-Origin-Opener-Policy: restrict-properties بدلاً من Cross-Origin-Opener-Policy: same-origin لتفعيل ميزة "حظر الوصول من نطاقات أخرى". وبدلاً من إنهاء علاقة الافتتاح، يقتصر الأمر على مجموعة فرعية منخفضة من window.postMessage() وwindow.closed للتواصل.

ستتمكّن من تفعيل ميزة "حظر الوصول من نطاقات أخرى" باستخدام السطرَين التاليَين من ملف المحتوى:

Cross-Origin-Opener-Policy: restrict-properties
Cross-Origin-Embedder-Policy: require-corp

أو

Cross-Origin-Opener-Policy: restrict-properties
Cross-Origin-Embedder-Policy: credentialless

اطّلِع على مزيد من المعلومات عن credentialless على تحميل موارد من مصادر مختلفة بدون رؤوس CORP باستخدام COEP: credentialless.

عرض توضيحي

جرِّب خيارات العناوين المختلفة في الإصدار التجريبي لعزل مصادر البيانات المختلفة.

تجربة مرحلة التجربة والتقييم

لتجربة Cross-Origin-Opener-Policy: restrict-properties، يمكنك الاشتراك في فترة التجربة.

دعم المتصفح

لا تتوفّر Cross-Origin-Opener-Policy: restrict-properties حاليًا إلا في Chrome. إنّ المتصفحات الأخرى تشارك بنشاط في المناقشة حول عملية التوحيد.

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

يحتاج موقعي الإلكتروني إلى التواصل مع النوافذ المنبثقة من المصدر نفسه، فهل يجب استخدام COOP: restrict-properties لتفعيل ميزة "حظر الوصول من نطاقات أخرى"؟

لن يؤدي ضبط القيمة COOP: restrict-properties على كلّ من النافذة المنبثقة والصفحة الرئيسية إلى فرض قيود. سيؤدي ضبط هذا الإعداد على النافذة المنبثقة فقط أو على الصفحة الرئيسية فقط إلى منع أي وصول إلى المواقع الإلكترونية غير postMessage وclosed في جميع المواقع الإلكترونية التي تفتح النافذة المنبثقة، حتى إذا كانت من المصدر نفسه.

هل مجموعة السمات المسموح بها ثابتة؟

استنادًا إلى الملاحظات التي تلقّيناها حتى الآن، يُعتقد أنّ window.postMessage وwindow.closed يكفيان لمعظم سير العمل، ولكننا ما زلنا ننظر في إمكانية فتحهما للمواقع الأخرى. إذا كانت لديك حالة استخدام لا يمكن حلّها باستخدام postMessage وclosed فقط، يُرجى إرسال ملاحظاتك في سلسلة المحادثات "الرغبة في إجراء تجربة".

الموارد