قيمة allow-same-site-none-cookies الجديدة في وضع الحماية من الإصدار 135 من Chrome

Natalia Markoborodova
Natalia Markoborodova

بدءًا من الإصدار 135 من Chrome، يمكنك استخدام القيمة الجديدة sandbox: allow-same-site-none-cookies. عند تحديد هذه السياسة وعدم توفّر ملفات تعريف الارتباط الخارجية، سيرسل المتصفّح ملفات تعريف الارتباط SameSite=None فقط في طلبات HTTP الواردة من إطارات iframe المحمية في وضع الحماية التابعة للطرف الأول.

ما هو إطار iframe المحمي؟

إطارات iframe في وضع الحماية هي إطارات iframe تخضع لقيود خاصة. ويتم التعامل معها على أنّها تتضمّن مصدرًا null, غير شفاف بشكلٍ تلقائي، لا تتوفّر الميزات التي يُحتمل أن تكون ضارة، مثل النصوص البرمجية والنماذج والنوافذ المنبثقة، داخل إطارات iframe في وضع الحماية.

استخدِم السمة sandbox من أجل تحديد الميزات التي يجب أن تتوفّر في إطار iframe محمي. على سبيل المثال:

 <iframe sandbox="allow-scripts" src="example-sandboxed-frame.html"/>

يُعدّ وضع التطبيق في بيئة الاختبار المعزولة فكرة جيدة دائمًا، لأنّه يتيح لك اختيار الأذونات المطلوبة لتحميل المحتوى المضمّن بنجاح بشكل دقيق، مع الحدّ من نطاق الثغرات الأمنية المحتملة.

ما سبب حاجتنا إلى هذه السياسة الجديدة؟

قبل طرح allow-same-site-none-cookies، كان بإمكانك ضبط سيناريوهَين لملفات تعريف الارتباط ضمن إطار iframe في وضع الحماية:

  • بدون الرمز المميّز allow-same-origin في السمة sandbox، سيتم تسلسل مصدر الإطار iframe على النحو التالي: null، ما يجعل جميع الطلبات الواردة من الصفحة المحصورة في وضع الحماية مقدَّمة من عدة مواقع إلكترونية. في هذه الحالة، سيتم تضمين ملفات تعريف الارتباط التي تتضمّن SameSite=None فقط في الطلبات.
  • باستخدام الرمز المميّز allow-same-origin في السمة sandbox، يتم التعامل مع الطلبات على أنّها واردة من المصدر الحقيقي لإطار iframe، ما يسمح بإرسال ملفات تعريف الارتباط التي تتضمّن أي قيمة SameSite.

عند حظر ملفات تعريف الارتباط التابعة لجهات خارجية، لن يتمكّن إطار iframe المحمي الذي لا يتضمّن allow-same-origin من إرسال أي ملفات تعريف ارتباط ما لم تفعّل allow-same-site-none-cookies.

سيظل بإمكان إطار iframe الذي يتضمّن allow-same-origin تضمين ملفات تعريف الارتباط في الطلبات الواردة من الموقع الإلكتروني نفسه، حتى عندما يتم حظر ملفات تعريف الارتباط التابعة لجهات خارجية. ومع ذلك، سيتم عرض جميع ملفات تعريف الارتباط الخاصة بالمصدر على أنشطة الويب التي يُحتمل أن تكون ضارة.

باستخدام allow-same-site-none-cookies، يمكن أن يرسل إطار iframe ملفات تعريف ارتباط SameSite=None في طلبات HTTP، بينما لن يتم تضمين ملفات تعريف الارتباط SameSite=Strict وSameSite=Lax التي قد تكون حساسة.

مثال عملي

لنفترض أنّ هناك موقعًا إلكترونيًا، practice-coding.example، يتيح للمستخدمين إنشاء مشاريع ترميز مخصّصة وتشغيلها وتضمين رموز برمجية خاصة بمستخدمين آخرين. لاستخدام الخدمة، على المستخدمين تسجيل الدخول، ما يؤدي إلى ضبط ملف تعريف ارتباط جلسة SameSite=Strict.

ينشئ مستخدم آخر مشروعًا، practice-coding.example/cookie-theft، يمكن للمستخدمين الآخرين تضمينه بدون علمهم كإطار iframe في مشاريعهم. في حال تعرُّض ملفات تعريف الارتباط SameSite=Strict وSameSite=Lax لإطار practice-coding.example/cookie-theft iframe، يمكن للمستخدم الضار سرقة ملفات تعريف ارتباط الجلسات الخاصة بالمستخدمين الآخرين.

في هذه الحالة، قد يريد مالك الموقع الإلكتروني حظر الوصول إلى ملفات تعريف الارتباط التي يُحتمل أن تكون حساسة. ومع ذلك، قد يظلّون يريدون السماح بملفات تعريف الارتباط SameSite=None داخل إطارات iframe المحصورة. على سبيل المثال، قد يتطلّب إطار practice-coding.example/coding-interview iframe المحمي SameSite=None ملفات تعريف الارتباط للسماح للمرشحين بإعادة زيارة الرمز. يمنع allow-same-site-none-cookies عرض كل ملفات تعريف الارتباط مع السماح بشكل انتقائي بملفات تعريف الارتباط اللازمة SameSite=None.

كيف يمكنني السماح فقط SameSite=None ضمن إطارات وضع الحماية التابعة للطرف الأول؟

لتفعيل ملفات تعريف الارتباط SameSite=None في الطلبات الواردة من صفحات وضع الحماية التابعة للطرف الأول، حدِّد الرمز المميّز allow-same-site-none-cookies في علامة iframe. على سبيل المثال:

 <iframe sandbox="allow-same-site-none-cookies" src="example-sandboxed-page.html"/>

يمكنك أيضًا ضبط سياسة allow-same-site-none-cookies باستخدام عنوان HTTP يتضمّن Content-Security-Policy:

Content-Security-Policy: sandbox allow-same-site-none-cookies;

جرِّب ذلك بنفسك من خلال العرض التوضيحي.

التفاعل مع الملاحظات ومشاركتها

يمكنك الإبلاغ عن مشكلة لمشاركة ملاحظاتك أو الإبلاغ عن مشاكل، أو الانضمام إلى المناقشة على GitHub.