[OUTDATED] مجموعات نطاقات الطرف الأول وسمة SameParty

تمتلك العديد من المؤسسات مواقع إلكترونية ذات صلة بأسماء نطاقات مختلفة، مثل brandx.site وfly-brandx.site، أو نطاقات لبلدان مختلفة مثل example.com وexample.rs وexample.co.uk وما إلى ذلك.

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

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

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

ما الفرق بين ملفات تعريف الارتباط للطرف الأول وملفات تعريف الارتباط التابعة لجهة خارجية؟

ليست ملفات تعريف الارتباط بطبيعتها تابعة لجهة خارجية أو تابعة لجهة خارجية، ويعتمد ذلك على السياق الحالي الذي يتم تضمين ملف تعريف الارتباط فيه. ذلك إما عند تنفيذ طلب في عنوان cookie أو من خلال document.cookie في JavaScript.

على سبيل المثال، إذا كان لدى video.site ملف تعريف ارتباط theme=dark، أثناء تصفُّح video.site وتقديم طلب إلى video.site، يعني ذلك سياق الموقع الإلكتروني نفسه وملف تعريف الارتباط المضمَّن هو الطرف الأول.

أما إذا كنت تستخدم my-blog.site التي تتضمّن مشغّل iframe في video.site، عندما يتم تقديم الطلب من my-blog.site إلى video.site، يكون ذلك ضمن سياق مواقع إلكترونية مختلفة ويكون ملف تعريف الارتباط theme تابعًا لجهة خارجية.

مخطّط بياني يعرض ملف تعريف ارتباط من video.site في سياقَين ويكون ملف تعريف الارتباط هو الموقع الإلكتروني نفسه عندما يكون سياق المستوى الأعلى هو video.site أيضًا. يكون ملف تعريف الارتباط من عدة مواقع إلكترونية عندما يكون سياق المستوى الأعلى هو my-blog.site مع إدراج video.site في إطار iframe.

يتم تحديد تضمين ملفات تعريف الارتباط من خلال السمة SameSite لملف تعريف الارتباط:

  • إنّ سياق الموقع الإلكتروني نفسه مع SameSite=Lax أو Strict أو None يجعل ملف تعريف الارتباط طرفًا أول.
  • إنّ السياق على مواقع إلكترونية متعددة مع SameSite=None يجعل ملف تعريف الارتباط جهة خارجية.

ومع ذلك، هذا ليس واضحًا دائمًا. لنفترض أنّ brandx.site هو موقع لحجز الرحلات الجوية ويستخدم اللغتين fly-brandx.site وdrive-brandx.site أيضًا للفصل بين رحلات الطيران والسيارات. وعلى مدار حجز رحلة واحدة، ينتقل الزوار بين هذه المواقع الإلكترونية لتحديد الخيارات المختلفة، ويتوقعون أن تظل "عربة التسوق" التي وقع عليها الاختيار موجودة على هذه المواقع. تدير ميزة brandx.site جلسة المستخدم باستخدام ملف تعريف ارتباط SameSite=None للسماح بعرضها في السياقات على مواقع إلكترونية متعددة. مع ذلك، فإنّ الجانب السلبي الآن هو أنّ ملف تعريف الارتباط لا يوفّر الحماية ضد التزوير على جميع المواقع الإلكترونية (CSRF). إذا تضمّن evil.site طلبًا إلى brandx.site، سيتم تضمين ملف تعريف الارتباط هذا.

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

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

سياسة مجموعات نطاقات الطرف الأول

تقترح مجموعات نطاقات الطرف الأول طريقة لتعريف هذه العلاقة بوضوح على مستوى مواقع إلكترونية متعددة يملكها الطرف نفسه ويديرها. سيتيح ذلك لـ brandx.site تحديد علاقته بالطرف الأول مع fly-brandx.site وdrive-brandx.site وما إلى ذلك.

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

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

على الرغم من أنّ الخيار التلقائي هو التقسيم حسب الموقع الإلكتروني، ما يؤدي إلى حلّ العديد من حالات استخدام الطرف الأول، إلا أنّ مثال brandx.site يوضِّح أنّه من الممكن أن يكون حجم الطرف الأول أكبر من موقع إلكتروني واحد فقط.

مخطّط بياني يوضّح كيفية تضمين النسخة نفسها من ملف تعريف الارتباط في مجموعة واحدة في سياقات على مواقع إلكترونية مختلفة عندما تكون جميع هذه المواقع الإلكترونية جزءًا من المجموعة نفسها

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

إنّ إحدى الطرق الممكنة لتسجيل أي مجموعة في الموقع الإلكتروني هي أن يرسل الموقع الإلكتروني مجموعة النطاقات المقترَحة إلى أداة تتبُّع عامة (مثل مستودع GitHub المخصّص) إلى جانب المعلومات اللازمة لاستيفاء سياسة المتصفّح.

بعد التحقق من تأكيد مجموعة الطرف الأول وفقًا للسياسة، قد تجلب المتصفحات بعد ذلك قوائم المجموعات من خلال عملية تحديث.

تخضع مرحلة التجربة والتقييم إلى سياسة محدّدة ليست نهائية، ولكن من المحتمل أن تظل المبادئ كما هي:

  • يجب أن تكون النطاقات في مجموعة الطرف الأول مملوكة وتحت إدارة المؤسسة نفسها.
  • يجب أن تكون النطاقات قابلة للتمييز للمستخدمين كمجموعة.
  • يجب أن تتشارك النطاقات سياسة خصوصية مشتركة.

كيفية تحديد مجموعة الطرف الأول

بمجرد تحديد الأعضاء ومالك مجموعة الطرف الأول لمؤسستك، ستكون الخطوة الحاسمة هي إرسال مجموعتك المقترحة للموافقة عليها. لا تزال العملية الدقيقة قيد المناقشة.

للإعلان عن مجموعة تابعة للطرف الأول، يجب استضافة موارد JSON الثابتة التي تتضمّن الأعضاء والمالكين على /.well-known/first-party-set في المستوى الأعلى لكل نطاق مضمّن.

في مثال مجموعة الطرف الأول brandx، يستضيف نطاق المالك ما يلي على https://brandx.site/.well-known/first-party-set:

{
  "owner": "brandx.site",
  "version": 1,
  "members": ["fly-brandx.site", "drive-brandx.site"]
}

يستضيف كل عضو في المجموعة أيضًا مورد JSON ثابتًا يشير إلى مالك المجموعة. في https://fly-brandx.site/.well-known/first-party-set، لدينا:

{ "owner": "brandx.site" }

وفي https://drive-brandx.site/.well-known/first-party-set:

{ "owner": "brandx.site" }

هناك بعض القيود المفروضة على مجموعات الطرف الأول:

  • يمكن أن يكون للمجموعة مالك واحد فقط.
  • يمكن للعضو أن ينتمي إلى مجموعة واحدة فقط، بدون تداخل أو خلط.
  • يتمثل الغرض من قائمة الأعضاء في أن تظل قابلة للقراءة نسبيًا وليست كبيرة جدًا.

كيف تؤثر "مجموعات نطاقات الطرف الأول" في ملفات تعريف الارتباط؟

المكوّن المطابق لملفات تعريف الارتباط هو السمة SameParty المقترَحة. يؤدي تحديد SameParty إلى إبلاغ المتصفّح بتضمين ملف تعريف الارتباط عندما يكون سياقه جزءًا من مجموعة الطرف الأول نفسها كسياق المستوى الأعلى.

يعني ذلك أنّه في حال ضبط brandx.site ملف تعريف الارتباط هذا:

Set-Cookie: session=123; Secure; SameSite=Lax; SameParty

وبعد ذلك، عندما يكون الزائر على "fly-brandx.site" وينتقل طلب إلى brandx.site، سيتم تضمين ملف تعريف الارتباط session في ذلك الطلب. إذا أرسل موقع إلكتروني آخر ليس جزءًا من مجموعة الطرف الأول، مثل hotel.xyz، طلبًا إلى brandx.site، لن يتم تضمين ملف تعريف الارتباط.

مخطّط بياني يعرض ملف تعريف ارتباط Brandx.site، سواء كان مسموحًا به أو محظورًا في سياقات على مواقع إلكترونية متعددة على النحو الموضّح

إلى حين توفّر السمة SameParty على نطاق واسع، يمكنك استخدام السمة SameSite معها لتحديد السلوك الاحتياطي لملفات تعريف الارتباط. يمكنك اعتبار السمة SameParty على أنّها توفّر إعدادات تتراوح بين SameSite=Lax وSameSite=None.

  • سيعمل "SameSite=Lax; SameParty" على توسيع وظائف "Lax" لتشمل سياقات تابعة للطرف نفسه عند توفّرها، ولكن سيعود إلى استخدام قيود Lax في حال عدم توفيره.
  • سيؤدي استخدام SameSite=None; SameParty إلى حصر وظائف None في سياقات تابعة للطرف نفسه فقط في حال توفّرها، وفي حال عدم تفعيل ذلك، يعود إلى أذونات None الأوسع نطاقًا.

هناك بعض المتطلبات الإضافية:

  • يجب أن تتضمّن ملفات تعريف الارتباط SameParty Secure.
  • يجب ألا تتضمّن ملفات تعريف الارتباط SameParty SameSite=Strict.

تم تفويض Secure لأنه لا يزال يعمل على عدة مواقع إلكترونية، وعليك الحدّ من هذه المخاطر عن طريق ضمان اتصالات (HTTPS) آمنة. وبالمثل، لأنّ هذه العلاقة بين عدة مواقع إلكترونية تكون غير صالحة، تُعدّ SameSite=Strict غير صالحة لأنّها لا تزال تسمح بتوفير حماية CSRF بشدة مستندة إلى الموقع الإلكتروني ضمن مجموعة.

ما هي حالات الاستخدام المناسبة لمجموعات نطاقات الطرف الأول؟

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

قد يكون لدى مؤسستك نطاقات مستوى أعلى مختلفة لكل من:

  • نطاقات التطبيقات: office.com وlive.com وmicrosoft.com
  • النطاقات ذات العلامات التجارية: amazon.com، وaudible.com / disney.com، وpixar.com
  • النطاقات الخاصة بالبلد لتفعيل الأقلمة: google.co.in، google.co.uk
  • نطاقات الخدمة التي لا يتفاعل معها المستخدمون مباشرةً مطلقًا، ولكنها تقدم خدمات على المواقع الإلكترونية للمؤسسة نفسها: gstatic.com وgithubassets.com وfbcdn.net
  • نطاقات وضع الحماية التي لا يتفاعل معها المستخدمون مطلقًا، ولكنها موجودة لأسباب أمنية: googleusercontent.com وgithubusercontent.com

كيف تشترك؟

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

أثناء مرحلة الاختبار، يمكنك تجربة الوظيفة باستخدام علامة سطر الأوامر --use-first-party-set وتقديم قائمة مفصولة بفواصل بالمواقع الإلكترونية.

يمكنك تجربة ذلك في الموقع الإلكتروني التجريبي على https://fps-member1.glitch.me/ بعد بدء متصفّح Chrome بالعلامة التالية:

--use-first-party-set=https://fps-member1.glitch.me,https://fps-member2.glitch.me,https://fps-member3.glitch.me

ويكون ذلك مفيدًا إذا كنت تريد إجراء الاختبار في بيئة التطوير أو تريد إضافة السمة SameParty في بيئة مباشرة لمعرفة مدى تأثير مجموعة الطرف الأول في ملفات تعريف الارتباط.

إذا كان لديك معدل نقل البيانات لإجراء التجارب وتقديم الملاحظات، يمكنك أيضًا الاشتراك في الفترة التجريبية الأصلية لمجموعات الطرف الأول وSameParty المتوفّرة في متصفِّح Chrome بدءًا من الإصدار 89 إلى 93.

كيفية تعديل ملفات تعريف الارتباط الخاصة بمرحلة التجربة والتقييم

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

الخيار الأول

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

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

قبل: set-cookie: cname=cval; SameSite=None; Secure

بعد: set-cookie: cname=cval; SameSite=None; Secure; SameParty

الخيار الثاني

يتطلّب الخيار الثاني بذل المزيد من الجهد، ولكنّه يتيح لك إمكانية فصل تجربة المصدر بالكامل عن الوظائف الحالية والسماح على وجه التحديد باختبار مجموعة SameSite=Lax; SameParty.

قبل: set-cookie: cname=cval; SameSite=None; Secure

بعد:

set-cookie: cname=cval; SameSite=None; Secure
set-cookie: cname-fps=cval; SameSite=Lax; Secure; SameParty

عند التحقق من ملف تعريف الارتباط في الطلبات الواردة، من المفترض أن ترى فقط ملف تعريف الارتباط cname-fps في طلب من عدة مواقع إلكترونية، إذا كانت المواقع الإلكترونية المعنيّة موجودة في المجموعة وكان المتصفّح في مرحلة التجربة والتقييم. ضع في اعتبارك هذا النهج كإطلاق متزامن لميزة محدّثة قبل إيقاف الإصدار السابق.

لماذا قد لا تحتاج إلى مجموعة منتجات خاصة بالطرف الأول؟

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

هناك بعض الأمور الأخرى التي يجب مراعاتها والتي تعني أنّ موقعك قد يكون على ما يرام بدون الحاجة إلى مجموعة:

  • أنت تستضيف على مصادر مختلفة، وليس مواقع إلكترونية مختلفة. في المثال أعلاه، إذا تضمّن brandx.site fly.brandx.site وdrive.brandx.site، يعني ذلك أنّ هذه النطاقات فرعية مختلفة ضِمن الموقع الإلكتروني نفسه. ويمكن لملفات تعريف الارتباط استخدام SameSite=Lax، وليس هناك حاجة إلى ضبط تلك الملفات.
  • وإذا كنت توفّر تضمينات تابعة لجهات خارجية في مواقع إلكترونية أخرى في المقدمة، نذكر مثالاً لفيديو من video.site مضمّن في my-blog.site وهو عبارة عن قسم واضح تابع لجهة خارجية. تتم إدارة المواقع الإلكترونية من قِبل مؤسسات مختلفة، ويرى المستخدمون هذه المواقع ككيانات منفصلة. ويجب ألا يكون هذان الموقعان في مجموعة معًا.
  • إذا كنت تقدّم خدمات تسجيل دخول إلى وسائل التواصل الاجتماعي تابعة لجهات خارجية غالبًا ما يعتمد موفّرو الهوية الذين يستخدمون عناصر مثل OAuth أو OpenId على ملفات تعريف الارتباط التابعة لجهات خارجية للحصول على تجربة تسجيل دخول أكثر سلاسة للمستخدمين. هذه حالة استخدام صالحة، ولكنّها غير مناسبة لمجموعات نطاقات الطرف الأول لأنّه هناك فرق واضح بين المؤسسات. تعمل الاقتراحات المبكرة مثل WebID على استكشاف طرق لتفعيل حالات الاستخدام هذه.