ملفات تعريف الارتباط المستخدَمة في SameSite

دعم المتصفح

  • Chrome: 51.
  • الحافة: 16.
  • Firefox: 60
  • Safari: 13-

المصدر

ويحتوي كل ملف تعريف ارتباط على زوج المفتاح/القيمة إلى جانب عدد من السمات التي التحكم في متى وأين يتم استخدام ملف تعريف الارتباط هذا.

مقدّمة عن السمة SameSite (الموضّحة في RFC6265bis) توضيح ما إذا كان ملف تعريف الارتباط الخاص بك محصورًا بالطرف الأول أو سياق نفس الموقع. من المفيد أن تفهم بالضبط معنى كلمة "site" يعنيه هنا. الموقع هو مزيج من لاحقة النطاق وجزء من النطاق فقط قبلها. على سبيل المثال، نطاق www.web.dev هو جزء من موقع web.dev الإلكتروني.

عبارة رئيسية: إذا كان المستخدم في www.web.dev ويطلب صورة من static.web.dev، هذا طلب من الموقع الإلكتروني نفسه.

تحدِّد قائمة اللاحقات العلنية الصفحات التي يتم احتسابها كـ على الموقع نفسه. فهو لا يعتمد فقط على نطاقات المستوى الأعلى مثل .com، ولكن يمكن أن تتضمّن أيضًا خدمات مثل "github.io" وهذا يمكّن يتم احتساب your-project.github.io وmy-project.github.io كموقعَين إلكترونيَّين منفصلَين.

عبارة رئيسية: إذا كان المستخدم في your-project.github.io ويطلب صورة من my-project.github.io عبارة عن طلب من عدة مواقع إلكترونية.

استخدام السمة SameSite للإشارة إلى استخدام ملفات تعريف الارتباط

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

في حال ضبط السمة SameSite على Strict، لا يمكن إرسال ملف تعريف الارتباط إلا في سياق الطرف الأول أي إذا كان الموقع الإلكتروني لملف تعريف الارتباط يتطابق مع الموقع الإلكتروني المعروض في شريط عناوين المتصفح. لذلك، إذا تم ضبط ملف تعريف الارتباط promo_shown على النحو التالي:

Set-Cookie: promo_shown=1; SameSite=Strict

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

يسمح SameSite=Lax للمتصفح بإرسال ملف تعريف الارتباط بهذه المستوى الأعلى. والتنقلات. على سبيل المثال، إذا كان موقع آخر يشير إلى محتوى موقعك، في في هذه الحالة باستخدام صورة قطتك وتقديم رابط إلى مقالتك التالي:

<p>Look at this amazing cat!</p>
<img src="https://blog.example/blog/img/amazing-cat.png" />
<p>Read the <a href="https://blog.example/blog/cat.html">article</a>.</p>

عند ضبط ملف تعريف الارتباط على Lax على النحو التالي:

Set-Cookie: promo_shown=1; SameSite=Lax

عندما يطلب المتصفح الوصول إلى amazing-cat.png لمدونة المستخدم الآخر، سيتم تنفيذ الموقع لا يرسل ملفات تعريف الارتباط. ومع ذلك، عندما يتبع القارئ إلى cat.html على موقعك، إلا أن هذا الطلب يتضمن ملف تعريف الارتباط.

ننصح باستخدام SameSite بهذه الطريقة، مع ضبط ملفات تعريف الارتباط التي تؤثر في الموقع الإلكتروني. العرض على Lax وملفات تعريف الارتباط ذات الصلة بإجراءات المستخدم على Strict.

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

ثلاثة ملفات تعريف ارتباط تحمل التصنيف &quot;None&quot; أو &quot;Lax&quot; أو &quot;متشدد&quot; حسب سياقها
ضَع علامة على سياق ملف تعريف الارتباط بشكلٍ صريح على أنّه None أو Lax أو Strict.

تغييرات على السلوك التلقائي بدون سمة SameSite

دعم المتصفح

  • Chrome: 80.
  • الحافة: 86.
  • متصفّح Firefox: خلف علم
  • Safari: غير متاح.

إنّ السمة SameSite متاحة على نطاق واسع، ولكن لم يتم اعتمادها على نطاق واسع. في الماضي، كان ضبط ملفات تعريف الارتباط بدون SameSite يؤدي إلى إرسالها تلقائيًا جميع السياقات، مما قد يجعل المستخدمين عرضة لـ CSRF بشكل غير مقصود تسرُّب المعلومات لتشجيع المطوّرين على التعبير عن نيّتهم وتوفير تجربة أكثر أمانًا للمستخدمين، وهو اقتراح مجموعة مهندسي شبكة الإنترنت (IETF)، كعكات أفضل بشكل متزايد على تغييرين رئيسيين:

  • يتم التعامل مع ملفات تعريف الارتباط التي لا تتضمّن سمة SameSite على أنّها SameSite=Lax.
  • يجب أن تحدّد ملفات تعريف الارتباط التي تتضمن SameSite=None السمة Secure أيضًا، ما يعني أنّها مطلوبة. سياق آمن.

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

SameSite=Lax كإعداد تلقائي

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

يجب أن يكون "SameSite=None" آمنًا.

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

Set-Cookie: widget_session=abc123; SameSite=None; Secure

يمكنك اختبار هذا السلوك اعتبارًا من الإصدار Chrome 76 من خلال تفعيل about://flags/#cookies-without-same-site-must-be-secure، ومن الإصدار 69 من Firefox من خلال ضبط network.cookie.sameSite.noneRequiresSecure في about:config

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

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

شكرًا على المساهمات والملاحظات من "ليلي تشين" و"مالتي أوبل" و"مايك". "ويست" و"روب دودسون" و"توم شتاينر" و"فيفيك سيكار"

صورة الجزء الرئيسي عن ملف تعريف الارتباط بواسطة بيل راين بريسكي في إلغاء البداية