ويحتوي كل ملف تعريف ارتباط على زوج المفتاح/القيمة إلى جانب عدد من السمات التي التحكم في متى وأين يتم استخدام ملف تعريف الارتباط هذا.
مقدّمة عن السمة SameSite
(الموضّحة في
RFC6265bis)
توضيح ما إذا كان ملف تعريف الارتباط الخاص بك محصورًا بالطرف الأول أو
سياق نفس الموقع. من المفيد أن تفهم بالضبط معنى كلمة "site" يعنيه هنا.
الموقع هو مزيج من لاحقة النطاق وجزء من النطاق فقط
قبلها. على سبيل المثال، نطاق 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" أو "متشدد" حسب سياقها](https://web.dev/static/articles/samesite-cookies-explained/image/three-cookies-labelled-no-495f9afccf1cd.png?authuser=19&hl=ar)
None
أو Lax
أو Strict
.
تغييرات على السلوك التلقائي بدون سمة SameSite
دعم المتصفح
إنّ السمة 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
يمكنك اختبار هذا السلوك اعتبارًا من الإصدار Chrome 76 من خلال تفعيل
about://flags/#cookies-without-same-site-must-be-secure
، ومن الإصدار 69 من Firefox
من خلال ضبط network.cookie.sameSite.noneRequiresSecure
في
about:config
ننصح أيضًا بتعديل ملفات تعريف الارتباط الحالية إلى Secure
في أقرب وقت ممكن.
إذا كنت تعتمد على خدمات توفر محتوى تابع لجهات خارجية على موقعك الإلكتروني، تأكَّد من
تحديث مزود الخدمة لملفات تعريف الارتباط
وتحديث أي مقتطفات أو
البرامج التابعة على موقعك الإلكتروني للتأكّد من أنه يستخدم السلوك الجديد.
SameSite
من وصفات الكعك
لمزيد من التفاصيل حول تعديل ملفات تعريف الارتباط من أجل معالجة هذه المشاكل بنجاح
التغييرات التي أُجريت على SameSite=None
والاختلافات في سلوك المتصفّح، يمكنك الاطّلاع على
مقالة متابعة، وصفات كعك SameSite.
شكرًا على المساهمات والملاحظات من "ليلي تشين" و"مالتي أوبل" و"مايك". "ويست" و"روب دودسون" و"توم شتاينر" و"فيفيك سيكار"
صورة الجزء الرئيسي عن ملف تعريف الارتباط بواسطة بيل راين بريسكي في إلغاء البداية