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

يمكنك تأمين موقعك الإلكتروني من خلال تعلُّم كيفية وضع علامات واضحة على ملفات تعريف الارتباط على مواقع إلكترونية متعددة.

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

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

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

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

إذا تم ضبط SameSite على Strict، سيتم إرسال ملف تعريف الارتباط في سياق الطرف الأول فقط. وفقًا للمستخدم، لن يتم إرسال ملف تعريف الارتباط إلا في حال تطابق الموقع الإلكتروني الخاص بملف تعريف الارتباط مع الموقع الإلكتروني المعروض حاليًا في شريط عنوان URL الخاص بالمتصفّح. ولذلك، إذا تم ضبط ملف تعريف الارتباط 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>

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

Set-Cookie: promo_shown=1; SameSite=Lax

عندما يكون القارئ على مدونة المستخدم الآخر، لن يتم إرسال ملف تعريف الارتباط عندما يطلب المتصفّح amazing-cat.png. مع ذلك، عندما يتّبع القارئ الرابط المؤدي إلى cat.html على مدونتك، سيتضمن هذا الطلب ملف تعريف الارتباط. يجعل هذا الإجراء Lax اختيارًا جيدًا لملفات تعريف الارتباط التي تؤثر في عرض الموقع الإلكتروني حيث يكون Strict مفيدًا لملفات تعريف الارتباط المتعلقة بالإجراءات التي يتخذها المستخدم.

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

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

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

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

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

ينفِّذ Chrome هذا السلوك التلقائي اعتبارًا من الإصدار 84. ويتيح Firefox اختبارها بدءًا من إصدار 69 من Firefox وسيجعلها سلوكيات افتراضية في المستقبل. لاختبار هذه السلوكيات في Firefox، افتح about:config واضبط network.cookie.sameSite.laxByDefault. تخطّط Edge أيضًا لتغيير سلوكياتها التلقائية.

SameSite=Lax تلقائيًا

لم يتم ضبط سمة
Set-Cookie: promo_shown=1

في حال إرسال ملف تعريف ارتباط بدون تحديد سمة SameSite...

تم تطبيق السلوك التلقائي
Set-Cookie: promo_shown=1; SameSite=Lax

وسيتعامل المتصفِّح مع ملف تعريف الارتباط هذا كما لو تم تحديد SameSite=Lax.

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

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

تم الرفض
Set-Cookie: widget_session=abc123; SameSite=None

سيتم رفض إعداد ملف تعريف ارتباط بدون Secure.

عدد الرسائل المقبولة
Set-Cookie: widget_session=abc123; SameSite=None; Secure

يجب التأكّد من إقران SameSite=None بالسمة Secure.

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

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

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

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

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

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