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

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

  • Chrome: 51
  • الحافة: 16.
  • Firefox: 60
  • Safari: 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; أو &quot;متساهل&quot; أو &quot;صارم&quot; استنادًا إلى سياقها
ضَع علامة على سياق ملف تعريف الارتباط صراحةً على أنّه None أو Lax أو Strict.

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

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

  • Chrome: 80
  • ‫Edge: 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

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

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

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

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

الصورة الرئيسية لملف تعريف الارتباط من تأليف Pille-Riin Priske على Unsplash