Browser Support
يحتوي كل ملف تعريف ارتباط على زوج من المفتاح والقيمة بالإضافة إلى عدد من السمات التي تتحكّم في وقت ومكان استخدام ملف تعريف الارتباط هذا.
يتيح لك تقديم السمة 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 لضمان وضوح هدفك.
None أو Lax أو Strict.
التغييرات في السلوك التلقائي بدون السمة SameSite
Browser Support
تتوفّر السمة 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
لمزيد من التفاصيل حول تعديل ملفات تعريف الارتباط للتعامل بنجاح مع هذه التغييرات في SameSite=None والاختلافات في سلوك المتصفّح، يُرجى الاطّلاع على المقالة التالية: وصفات ملفات تعريف الارتباط بسمة SameSite.
نشكر "ليلي تشين" و"مالت أوبل" و"مايك ويست" و"روب دودسون" و"توم شتاينر" و"فيفيك سيخار" على مساهماتهم وملاحظاتهم.