يحتوي كل ملف تعريف ارتباط على زوج مفتاح/قيمة بالإضافة إلى عدد من السمات التي تتحكم في وقت استخدام ملف تعريف الارتباط ومكانه.
يتيح لك إدخال سمة 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
لضمان وضوح نيتك.
التغييرات على السلوك التلقائي بدون 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
يمكنك اختبار هذا السلوك اعتبارًا من الإصدار 76 من Chrome من خلال تفعيل
about://flags/#cookies-without-same-site-must-be-secure
، وبدءًا من الإصدار 69 من Firefox
من خلال ضبط network.cookie.sameSite.noneRequiresSecure
في
about:config
.
ننصح أيضًا بتعديل ملفات تعريف الارتباط الحالية إلى Secure
في أقرب وقت ممكن.
إذا كنت تعتمد على خدمات تقدّم محتوى تابعًا لجهات خارجية على موقعك الإلكتروني، تأكَّد من أنّ
مزوّد الخدمة يُعدّل ملفات تعريف الارتباط الخاصة به، وأنّه يُعدّل أي مقتطفات أو
موارد تابعة له على موقعك الإلكتروني للتأكّد من أنّه يستخدم السلوك الجديد.
SameSite
وصفات ملفات تعريف الارتباط
للاطّلاع على مزيد من التفاصيل حول تعديل ملفات تعريف الارتباط بهدف معالجة هذه التغييرات على SameSite=None
والاختلافات في طريقة عمل المتصفّح بنجاح، راجِع المقالة التالية بعنوان وصفات ملفّات تعريف الارتباط SameSite.
نشكرك على المساهمات والملاحظات التي قدّمها كلّ من "ليلي تشين" و"مالتي أوبل" و"مايك ويست" و"روب دوسن" و"توم شتاينر" و"فيفيك سيكار".
الصورة الرئيسية لملف تعريف الارتباط من تأليف Pille-Riin Priske على Unsplash