اعتبارًا من الإصدار 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
تضمين ملفات تعريف الارتباط في requests
على الموقع الإلكتروني نفسه، حتى في حال حظر ملفات تعريف الارتباط التابعة لجهات خارجية. ومع ذلك، سيتم تعريض
علبة ملفّات تعريف الارتباط الخاصة بالموقع الإلكتروني بالكامل
لنشاط ويب يُحتمل أن يكون ضارًا.
باستخدام 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
، يمكن للمستخدم الضار سرقة
ملفات تعريف ارتباط جلسات المستخدمين الآخرين.
في هذا السيناريو، قد يريد مالك الموقع الإلكتروني حظر الوصول إلى ملفات تعريف الارتباط التي يُحتمل أن تكون
حساسة. ومع ذلك، قد يرغبون في السماح بملفات تعريف ارتباط 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.