ملفات تعريف الارتباط التي لديها حالة منفصلة (CHIPS)

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

حالة التنفيذ

توافق المتصفّح

  • Chrome: 114
  • ‫Edge: 114
  • ‫Firefox: 131
  • Safari: غير متوافق

المصدر

ما هو CHIPS؟

تسمح ميزة "ملفات تعريف الارتباط في الحالة المقسَّمة المنفصلة" (CHIPS) للمطوّرين باختيار ملف تعريف ارتباط في مساحة تخزين مقسَّمة، مع توفير حاويات ملفات تعريف ارتباط منفصلة لكل موقع إلكتروني من المستوى الأعلى، ما يُحسِّن من خصوصية المستخدم وأمانه.

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

تشكّل مبادرة CHIPS وStorage Access API ومجموعات المواقع الإلكترونية ذات الصلة الطريقة الوحيدة لقراءة ملفات تعريف الارتباط وكتابتها من السياقات على مستوى مواقع إلكترونية مختلفة، مثل إطارات iframe، عند حظر ملفات تعريف الارتباط التابعة لجهات خارجية.

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

تُقدّم CHIPS سمة جديدة لملفات تعريف الارتباط، وهي Partitioned، لتتوافق مع ملفات تعريف الارتباط على مواقع إلكترونية مختلفة والتي يتم تقسيمها حسب السياق من المستوى الأعلى.

عنوان Set-Cookie:

Set-Cookie: __Host-name=value; Secure; Path=/; SameSite=None; Partitioned;

JavaScript:

document.cookie="__Host-name=value; Secure; Path=/; SameSite=None; Partitioned;"

يكون ملف تعريف ارتباط مُقسَّم تابع لجهة خارجية مرتبطًا بالموقع الإلكتروني من المستوى الأعلى الذي تم ضبطه فيه في البداية، ولا يمكن الوصول إليه من مكان آخر. بهذه الطريقة، لا يمكن قراءة ملفات تعريف الارتباط التي تحدّدها خدمة تابعة لجهة خارجية إلا ضمن السياق المضمّن نفسه للموقع الإلكتروني من المستوى الأعلى الذي تم ضبطها فيه في البداية.

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

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

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

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

مخطّط بياني يوضّح أنّه لا تتم مشاركة ملفات تعريف الارتباط عندما يتم تضمين الجهة الخارجية نفسها في موقعَين إلكترونيين مختلفَين.
من خلال تقسيم ملفات تعريف الارتباط، لا يمكن لخدمة تابعة لجهة خارجية تُنشئ ملف تعريف ارتباط عند تضمينها في موقع إلكتروني الوصول إلى ملف تعريف الارتباط نفسه حتى عندما يزور المستخدمون الخدمة كموقع إلكتروني من المستوى الأعلى.

حالات الاستخدام

على سبيل المثال، قد يريد الموقع الإلكتروني retail.example العمل مع خدمة تابعة لجهة خارجية support.chat.example لتضمين مربّع محادثة دعم على موقعه الإلكتروني. تعتمد العديد من خدمات المحادثة القابلة للتضمين اليوم على ملفات تعريف الارتباط لحفظ الحالة.

رسم بياني يعرض موقعًا إلكترونيًا يتضمّن تطبيقًا مصغّرًا للمحادثة
موقع إلكتروني من المستوى الأعلى retail.example يضمّن خدمة تابعة لجهة خارجية support.chat.example.

في حال عدم توفّر إمكانية ضبط ملف تعريف ارتباط على مستوى الموقع الإلكتروني، سيحتاج support.chat.example إلى العثور على طرق بديلة غالبًا ما تكون أكثر تعقيدًا لتخزين الحالة. بدلاً من ذلك، يجب تضمينه في صفحة المستوى الأعلى، ما يعرّضك للمخاطر لأنّه يسمح بنصوص support.chat.example البرمجية بالحصول على امتيازات مميّزة على retail.example، مثل إمكانية الوصول إلى ملفات تعريف الارتباط للمصادقة.

توفّر تقنية CHIPS خيارًا أسهل لمواصلة استخدام ملفات تعريف الارتباط على مستوى المواقع الإلكترونية المختلفة، بدون المخاطر المرتبطة بملفات تعريف الارتباط غير المقسّمة.

تشمل أمثلة حالات استخدام CHIPS أي سيناريوهات تتطلّب فيها الموارد الفرعية على مستوى الموقع الإلكتروني بعض المفاهيم المتعلّقة بالجلسة أو الحالة الثابتة التي يتم تحديد نطاقها على نشاط المستخدِم على موقع إلكتروني واحد من المستوى الأعلى، مثل:

  • عمليات تضمين المحادثات التابعة لجهات خارجية
  • عمليات تضمين الخرائط التابعة لجهات خارجية
  • عمليات دمج الدفع التابعة لجهات خارجية
  • موازنة حمل CDN للمحتوى الفرعي
  • مزوّدو أنظمة إدارة المحتوى (CMS) بلا واجهة مستخدم رسومية
  • نطاقات وضع الحماية لعرض محتوى المستخدم غير الموثوق به (مثل googleusercontent.com وgithubusercontent.com)
  • شبكات توصيل المحتوى التابعة لجهات خارجية التي تستخدم ملفات تعريف الارتباط لعرض المحتوى الذي يتم التحكّم في الوصول إليه من خلال حالة المصادقة على الموقع الإلكتروني التابع للطرف الأول (على سبيل المثال، صور الملف الشخصي على مواقع التواصل الاجتماعي المستضافة على شبكات توصيل المحتوى التابعة لجهات خارجية)
  • إطارات عمل الواجهة الأمامية التي تعتمد على واجهات برمجة التطبيقات البعيدة باستخدام ملفات تعريف الارتباط في طلبات البيانات
  • الإعلانات المضمّنة التي تحتاج إلى نطاق الولاية لكل ناشر (على سبيل المثال، تسجيل الإعدادات المفضّلة للإعلانات لدى المستخدِمين لهذا الموقع الإلكتروني)

سبب استخدام CHIPS لنموذج تقسيم يعتمد على الموافقة

في الحالات التي يتم فيها حظر الوصول إلى ملفات تعريف الارتباط التابعة لجهات خارجية غير المُقسَّمة، تمّت محاولة اتّباع طريقتَين أخريتَين للتقسيم.

أعلن مطوّرو Firefox أنّهم يقسّمون جميع ملفات تعريف الارتباط التابعة لجهات خارجية تلقائيًا في وضع ETP Strict ووضع التصفّح بخصوصية تامّة، وبالتالي يتم تقسيم جميع ملفات تعريف الارتباط على مستوى المواقع الإلكترونية حسب الموقع الإلكتروني من المستوى الأعلى. ومع ذلك، يمكن أن يؤدي تقسيم ملفات تعريف الارتباط بدون موافقة جهة خارجية إلى حدوث أخطاء غير متوقّعة، لأنّ بعض الخدمات التابعة لجهات خارجية قد أنشأت خوادم تتوقّع ملفّ تعريف ارتباط تابعًا لجهة خارجية غير مقسَّم.

حاول Safari في السابق تقسيم ملفات تعريف الارتباط استنادًا إلى الأساليب الاستقرائية، ولكنّه اختار في النهاية حظرها بالكامل، مع الإشارة إلى الارتباك الذي يصيب المطوّرين كأحد الأسباب. أعرب فريق Safari مؤخرًا عن اهتمامه بنموذج يستند إلى الموافقة.

ما يميز CHIPS عن عمليات التنفيذ الحالية لملفات تعريف الارتباط المقسّمة هو الموافقة من الجهات الخارجية. يجب ضبط ملفات تعريف الارتباط باستخدام سمة جديدة لإرسالها في الطلبات بين الجهات بعد إيقاف ملفات تعريف الارتباط التابعة لجهات خارجية (غير المقسّمة) نهائيًا.

مع أنّ ملفات تعريف الارتباط التابعة لجهات خارجية لا تزال متوفّرة، توفّر السمة Partitioned خيارًا للموافقة على نوع أكثر تقييدًا وأمانًا من سلوك ملفات تعريف الارتباط. تشكّل مبادرة CHIPS خطوة مهمة لمساعدة الخدمات في الانتقال بسلاسة إلى مستقبل بدون ملفات تعريف الارتباط التابعة لجهات خارجية.

في الوقت الحالي، يتمّ ربط ملفات تعريف الارتباط باسم المضيف أو نطاق الموقع الإلكتروني الذي ضبطها، أي مفتاح المضيف.

على سبيل المثال، بالنسبة إلى ملفات تعريف الارتباط من https://support.chat.example، يكون مفتاح المضيف هو ("support.chat.example").

في إطار CHIPS، سيتم استخدام مفتاحَين لملفات تعريف الارتباط التي يتم تفعيل ميزة التقسيم فيها، وهما مفتاح المضيف ومفتاح التقسيم.

مفتاح تقسيم ملف تعريف الارتباط هو الموقع الإلكتروني (المخطّط والنطاق القابل للتسجيل) لعنوان URL من المستوى الأعلى الذي كان المتصفّح يزوره في بداية الطلب إلى نقطة النهاية التي ضبطت ملف تعريف الارتباط.

في المثال السابق، حيث تم تضمين https://support.chat.example في https://retail.example، يكون عنوان URL ذات المستوى الأعلى هو https://retail.example.

مفتاح التقسيم في هذه الحالة هو ("https", "retail.example").

وبالمثل، مفتاح تقسيم الطلب هو الموقع الإلكتروني لعنوان URL من المستوى الأعلى الذي يزوره المتصفّح في بداية الطلب. يجب أن تُرسِل المتصفّحات ملف تعريف ارتباط يتضمّن سمة Partitioned فقط في الطلبات التي تحتوي على مفتاح التقسيم نفسه المستخدَم في ملف تعريف الارتباط هذا.

في ما يلي شكل مفتاح ملفّ تعريف الارتباط في المثال السابق قبل استخدام CHIPS وبعده.

يشترك الموقع الإلكتروني "أ" والموقع الإلكتروني المضمّن "ج" في ملفّ تعريف ارتباط مُقسَّم. عندما لا يكون مضمّنًا، لا يمكن للموقع الإلكتروني "ج" الوصول إلى ملف تعريف الارتباط المقسّم.
يشترك الموقع الإلكتروني "أ" والموقع الإلكتروني المضمّن "ج" في ملف تعريف ارتباط مُقسَّم. عندما لا يكون مضمّنًا، لا يمكن للموقع الإلكتروني "ج" الوصول إلى ملف تعريف الارتباط المقسّم.

قبل استخدام ملفات تعريف الارتباط في الحالة المقسَّمة المنفصلة (CHIPS)

key=("support.chat.example")

بعد ملفات تعريف الارتباط في الحالة المقسَّمة المنفصلة (CHIPS)

key={("support.chat.example"),("https", "retail.example")}

تصميم الأمان

لتعزيز الممارسات الأمنية الجيدة، لا يتم ضبط ملفات تعريف الارتباط وإرسالها إلا من خلال بروتوكولات آمنة باستخدام CHIPS.

  • يجب ضبط ملفات تعريف الارتباط المقسّمة باستخدام Secure.
  • يُنصح باستخدام البادئة __Host- عند ضبط ملفات تعريف الارتباط المقسّمة لربطها باسم المضيف (وليس بالنطاق القابل للتسجيل).

مثال:

Set-Cookie: __Host-example=34d8g; SameSite=None; Secure; Path=/; Partitioned;

بدائل ملفات تعريف الارتباط في الحالة المقسَّمة المنفصلة (CHIPS)

Storage Access API ومجموعات المواقع الإلكترونية ذات الصلة (RWS) المرتبطة بها هما آليتان لمنصّة الويب لتفعيل الوصول المحدود إلى ملفات تعريف الارتباط على جميع المواقع الإلكترونية لأغراض محدّدة موجّهة للمستخدمين.

هذه هي البدائل لقسمة CHIPS حيث يكون الوصول إلى ملفات تعريف الارتباط غير المقسّمة على مستوى الموقع الإلكتروني مطلوبًا.

ننصحك باستخدام Storage Access API وRelated Website Sets في الحالات التي تحتاج فيها إلى ملف تعريف الارتباط نفسه ليكون متاحًا لخدمة مضمّنة في عدة مواقع إلكترونية ذات صلة.

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

يعتمد تصميم "مجموعات المواقع الإلكترونية ذات الصلة" على واجهة برمجة التطبيقات Storage Access API ولا يتم دمجه مع تقسيم CHIPS. إذا كانت لديك حالة استخدام تعتمد على قسم مشترَك من ملفات تعريف الارتباط على جميع المواقع الإلكترونية ضمن "مساحة عمل إعادة التوجيه"، يمكنك تقديم أمثلة وملاحظات حول مشكلة GitHub.

عرض توضيحي

سيرشدك هذا العرض التوضيحي إلى كيفية عمل ملفات تعريف الارتباط المقسّمة وكيفية فحصها في "أدوات مطوّري البرامج".

يضمِّن الموقع الإلكتروني "أ" إطارًا iframe من الموقع الإلكتروني "ب" الذي يستخدم JavaScript لضبط ملفَّي تعريف ارتباط: ملف تعريف ارتباط مقسَّم وملف تعريف ارتباط غير مقسَّم. يعرض الموقع الإلكتروني "ب" جميع ملفات تعريف الارتباط التي يمكن الوصول إليها من هذا الموقع باستخدام document.cookie.

عند حظر ملفات تعريف الارتباط التابعة لجهات خارجية، لن يتمكّن الموقع الإلكتروني "ب" من ضبط ملف تعريف الارتباط الذي يتضمّن السمة Partitioned والوصول إليه إلا في سياق مواقع إلكترونية متعددة.

عندما تكون ملفات تعريف الارتباط التابعة لجهات خارجية مسموحًا بها، يمكن للموقع الإلكتروني "ب" أيضًا ضبط ملف تعريف الارتباط غير المقسّم والوصول إليه.

الموقع "أ" والموقع "ب"
الجانب الأيسر: تم حظر ملفات تعريف الارتباط التابعة لجهات خارجية. الجانب الأيمن: يُسمح بملفات تعريف الارتباط التابعة لجهات خارجية.

المتطلبات الأساسية

  1. الإصدار 118 من Chrome أو إصدار أحدث
  2. انتقِل إلى chrome://flags/#test-third-party-cookie-phaseout وفعِّل هذا الإعداد.

استخدام أدوات المطوّرين لفحص ملفات تعريف الارتباط المقسّمة

  1. انتقِل إلى https://chips-site-a.glitch.me.
  2. اضغط على Control+Shift+J (أو Command+Option+J في نظام التشغيل Mac) لفتح DevTools.
  3. انقر على علامة التبويب التطبيق.
  4. انتقِل إلى التطبيق > مساحة التخزين > ملفات تعريف الارتباط.
  5. انقر على https://chips-site-b.glitch.me.

ستعرِض "أدوات المطوّر" جميع ملفات تعريف الارتباط من المصدر المحدّد.

ملفات تعريف الارتباط من الموقع الإلكتروني "ب" في علامة التبويب "تطبيق" ضمن "أدوات مطوّري البرامج"

لا يمكن للموقع الإلكتروني "ب" ضبط ملف تعريف الارتباط المقسَّم إلا في سياق مواقع إلكترونية متعددة، وسيتم حظر ملف تعريف الارتباط غير المقسَّم:

  • من المفترض أن يظهر لك __Host-partitioned-cookie مع مفتاح التقسيم للموقع الإلكتروني من المستوى الأعلى https://chips-site-a.glitch.me.
مفتاح التقسيم لـ __Host-partitioned-cookie.
  1. انقر على الانتقال إلى الموقع الإلكتروني "ب".
  2. في "أدوات المطوّر"، انتقِل إلى التطبيق > مساحة التخزين > ملفات تعريف الارتباط.
  3. انقر على https://chips-site-b.glitch.me.
الموقع "ب"
على المستوى الأعلى، يمكن للموقع الإلكتروني "ب" الاطّلاع على جميع ملفات تعريف الارتباط، سواء كانت مجزّأة أو غير مجزّأة

في هذا السيناريو، بما أنّك على الموقع الإلكتروني "ب" في سياق المستوى الأعلى، يمكنه ضبط ملفّي تعريف الارتباط والوصول إليهما:

  • يحتوي unpartitioned-cookie على مفتاح قسم فارغ.
  • يحتوي ملف تعريف الارتباط __Host-partitioned-cookie على مفتاح القسم https://chips-site-b.glitch.me.
ملفات تعريف الارتباط من الموقع الإلكتروني "ب" في علامة التبويب "تطبيق" ضمن "أدوات مطوري البرامج" عند الانتقال إلى الموقع الإلكتروني "ب" كموقع إلكتروني من المستوى الأعلى يحتوي ملف تعريف الارتباط __Host-partitioned-cookie على مفتاح التقسيم https://chips-site-b.glitch.me.

إذا عدت إلى الموقع الإلكتروني "أ"، سيتم الآن تخزين unpartitioned-cookie في المتصفّح، ولكن لن يكون بالإمكان الوصول إليه من الموقع الإلكتروني "أ".

  1. انقر على الانتقال إلى الموقع الإلكتروني (أ).
  2. انقر على علامة التبويب الشبكة.
  3. انقر على https://chips-site-b.glitch.me.
  4. انقر على علامة التبويب ملفّات تعريف الارتباط (Cookies).

أثناء الانتقال إلى الموقع "أ"، من المفترض أن يظهر لك __Host-partitioned-cookie مع مفتاح التقسيم للموقع "أ" من المستوى الأعلى.https://chips-site-a.glitch.me

علامة التبويب "الشبكة" تعرض ملفات تعريف الارتباط من إطار iframe للموقع الإلكتروني "ب" والتي يمكن الوصول إليها عند تضمينها في الموقع الإلكتروني "أ".

في حال وضع علامة في المربّع بجانب عرض طلبات ملفات تعريف الارتباط التي تمت فلترتها، ستعرِض أدوات مطوّري البرامج أنّه تم حظر ملف تعريف الارتباط غير المقسّم، مع تمييزه باللون الأصفر وعرض نصائح: "تم حظر ملف تعريف الارتباط هذا طبقًا للإعدادات المفضّلة للمستخدم".

علامة التبويب "الشبكة" تعرض ملفات تعريف الارتباط المحظورة من إطار iframe للموقع الإلكتروني "ب"

في التطبيق > مساحة التخزين > ملفات تعريف الارتباط، سيؤدي النقر على https://chips-site-b.glitch.me إلى عرض ما يلي:

  • unpartitioned-cookie مع مفتاح التقسيم الفارغ.
  • ملف تعريف ارتباط __Host-partitioned-cookie الذي يتضمّن مفتاح التقسيم https://chips-site-a.glitch.me
ملفات تعريف الارتباط من الموقع الإلكتروني "ب" في علامة التبويب "تطبيق" ضمن "أدوات مطوّري البرامج" يحتوي ملف تعريف الارتباط __Host-partitioned-cookie على مفتاح القسم https://chips-site-a.glitch.me. يتم عرض unpartitioned-cookie، ولكن لا يمكن الوصول إليه من خلال إطار iframe للموقع الإلكتروني "ب" عند تضمينه في الموقع الإلكتروني "أ".

محو ملفات تعريف الارتباط

لإعادة ضبط العرض التجريبي، امسح جميع ملفات تعريف الارتباط للموقع الإلكتروني:

  • اضغط على Control+Shift+J (أو Command+Option+J في نظام التشغيل Mac) لفتح DevTools.
  • انقر على علامة التبويب التطبيق.
  • انتقِل إلى التطبيق > مساحة التخزين > ملفات تعريف الارتباط.
  • انقر بزر الماوس الأيمن على https://chips-site-b.glitch.me.
  • انقر على محو.

الموارد