السماح للمطوّرين بتفعيل ملف تعريف ارتباط في مساحة تخزين "مقسّمة"، مع توفير علبة ملفات تعريف ارتباط منفصلة لكل موقع إلكتروني من المستوى الأعلى
حالة التنفيذ
- متوافق بشكل تلقائي في Chrome 114 والإصدارات الأحدث
- تتوفّر الآن مرحلة التجربة والتقييم على إصدارات Chrome 100 وChrome 116.
- اطّلِع على الرغبة في إجراء التجربة ونوايا الشحن.
ما هو 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
لتضمين مربّع محادثة دعم على موقعه الإلكتروني. تعتمد العديد من خدمات المحادثة القابلة للتضمين اليوم على ملفات تعريف الارتباط لحفظ الحالة.
في حال عدم توفّر إمكانية ضبط ملف تعريف ارتباط على مستوى الموقع الإلكتروني، سيحتاج 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
والوصول إليه إلا في سياق مواقع إلكترونية متعددة.
عندما تكون ملفات تعريف الارتباط التابعة لجهات خارجية مسموحًا بها، يمكن للموقع الإلكتروني "ب" أيضًا ضبط ملف تعريف الارتباط غير المقسّم والوصول إليه.
المتطلبات الأساسية
- الإصدار 118 من Chrome أو إصدار أحدث
- انتقِل إلى
chrome://flags/#test-third-party-cookie-phaseout
وفعِّل هذا الإعداد.
استخدام أدوات المطوّرين لفحص ملفات تعريف الارتباط المقسّمة
- انتقِل إلى https://chips-site-a.glitch.me.
- اضغط على
Control+Shift+J
(أوCommand+Option+J
في نظام التشغيل Mac) لفتح DevTools. - انقر على علامة التبويب التطبيق.
- انتقِل إلى التطبيق > مساحة التخزين > ملفات تعريف الارتباط.
- انقر على
https://chips-site-b.glitch.me
.
ستعرِض "أدوات المطوّر" جميع ملفات تعريف الارتباط من المصدر المحدّد.
لا يمكن للموقع الإلكتروني "ب" ضبط ملف تعريف الارتباط المقسَّم إلا في سياق مواقع إلكترونية متعددة، وسيتم حظر ملف تعريف الارتباط غير المقسَّم:
- من المفترض أن يظهر لك
__Host-partitioned-cookie
مع مفتاح التقسيم للموقع الإلكتروني من المستوى الأعلىhttps://chips-site-a.glitch.me
.
- انقر على الانتقال إلى الموقع الإلكتروني "ب".
- في "أدوات المطوّر"، انتقِل إلى التطبيق > مساحة التخزين > ملفات تعريف الارتباط.
- انقر على
https://chips-site-b.glitch.me
.
في هذا السيناريو، بما أنّك على الموقع الإلكتروني "ب" في سياق المستوى الأعلى، يمكنه ضبط ملفّي تعريف الارتباط والوصول إليهما:
- يحتوي
unpartitioned-cookie
على مفتاح قسم فارغ. - يحتوي ملف تعريف الارتباط
__Host-partitioned-cookie
على مفتاح القسمhttps://chips-site-b.glitch.me
.
إذا عدت إلى الموقع الإلكتروني "أ"، سيتم الآن تخزين unpartitioned-cookie
في المتصفّح، ولكن لن يكون بالإمكان الوصول إليه من الموقع الإلكتروني "أ".
- انقر على الانتقال إلى الموقع الإلكتروني (أ).
- انقر على علامة التبويب الشبكة.
- انقر على
https://chips-site-b.glitch.me
. - انقر على علامة التبويب ملفّات تعريف الارتباط (Cookies).
أثناء الانتقال إلى الموقع "أ"، من المفترض أن يظهر لك __Host-partitioned-cookie
مع مفتاح التقسيم للموقع "أ" من المستوى الأعلى.https://chips-site-a.glitch.me
في حال وضع علامة في المربّع بجانب عرض طلبات ملفات تعريف الارتباط التي تمت فلترتها، ستعرِض أدوات مطوّري البرامج أنّه تم حظر ملف تعريف الارتباط غير المقسّم، مع تمييزه باللون الأصفر وعرض نصائح: "تم حظر ملف تعريف الارتباط هذا طبقًا للإعدادات المفضّلة للمستخدم".
في التطبيق > مساحة التخزين > ملفات تعريف الارتباط، سيؤدي النقر على https://chips-site-b.glitch.me
إلى عرض ما يلي:
unpartitioned-cookie
مع مفتاح التقسيم الفارغ.- ملف تعريف ارتباط
__Host-partitioned-cookie
الذي يتضمّن مفتاح التقسيمhttps://chips-site-a.glitch.me
محو ملفات تعريف الارتباط
لإعادة ضبط العرض التجريبي، امسح جميع ملفات تعريف الارتباط للموقع الإلكتروني:
- اضغط على
Control+Shift+J
(أوCommand+Option+J
في نظام التشغيل Mac) لفتح DevTools. - انقر على علامة التبويب التطبيق.
- انتقِل إلى التطبيق > مساحة التخزين > ملفات تعريف الارتباط.
- انقر بزر الماوس الأيمن على
https://chips-site-b.glitch.me
. - انقر على محو.
الموارد
- GitHub: يمكنك قراءة الشرح وطرح الأسئلة ومتابعتها.
- دعم المطوّرين: يمكنك طرح الأسئلة والانضمام إلى المناقشات في مستودع دعم المطوّرين في "مبادرة حماية الخصوصية".