ملفات تعريف الارتباط المستخدَمة في 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