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

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

  • 51
  • 16
  • 60
  • 13

المصدر

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

تتيح لك إضافة السمة SameSite (المحدّدة في RFC6265bis) توضيح ما إذا كان ملف تعريف الارتباط يقتصر على سياق الطرف الأول أو سياق الموقع الإلكتروني نفسه. ومن المفيد فهم معنى كلمة "موقع" هنا بالضبط. إنّ الموقع الإلكتروني هو تركيبة من لاحقة النطاق وجزء من النطاق الذي يسبقه مباشرةً. على سبيل المثال، النطاق 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;بدون&quot; أو Lax أو &quot;متشدّد&quot; حسب سياقها
ضَع علامة None أو Lax أو Strict على سياق ملف تعريف الارتباط بوضوح.

إجراء تغييرات على السلوك التلقائي بدون SameSite

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

  • 80
  • 86
  • x

يُسمح باستخدام السمة 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

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

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

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

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

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