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

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

تتوفّر قيمة جديدة لسياسة Cross-Origin Opener Policy (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، ما يسمح بجميع التفاعلات المتعددة المصادر مع النوافذ المنبثقة.

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

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 لاستخدام واجهات برمجة التطبيقات هذه. ومع ذلك، سيؤدي ذلك إلى إيقاف أي عملية تنطوي على نوافذ منبثقة من مصادر متعددة قد تحتاج إليها، مثل تسجيل الدخول لمرة واحدة وخدمة "دفعات Google".

يمكن الآن استخدام 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 على Load cross-origin resources without CORP headers using 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 فقط، يمكنك ترك ملاحظاتك في سلسلة المحادثات حول نية إجراء تجربة.

الموارد