سمات ملفات تعريف الارتباط

عندما يستجيب خادم ويب لطلب أحد الموارد، يمكن أن يُضمِّن الخادم عنوان Set-Cookie مع استجابته. يطلب هذا العنوان من المتصفّح تخزين ملف تعريف ارتباط. على سبيل المثال: Set-Cookie:cat=tabby. توضِّح المقالة ما المقصود بملفات تعريف الارتباط؟ آلية عمل ملفات تعريف الارتباط.

بالإضافة إلى تقديم اسم ملف تعريف ارتباط وقيمته، يمكن أن يتضمّن Set-Cookieسمات للتحكّم في ما إذا كان سيتم ضبط ملفات تعريف الارتباط، ووقت انتهاء صلاحيتها. يتم فصل سمات ملفّ تعريف الارتباط باستخدام الفواصل المنقوطة. على سبيل المثال:

    Set-Cookie:cat=tabby; Expires=Tue, 31 Dec 2999 23:59:59 GMT;

توضّح هذه المقالة أهم سمات ملفات تعريف الارتباط:

يشرح مقالة استخدام ملفات تعريف الارتباط HTTP سمات ملفات تعريف الارتباط بمزيد من التفاصيل الفنية.

آمنة

👉 يجب تضمين Secure تلقائيًا لجميع ملفات تعريف الارتباط.

إذا كان عنوان Set-Cookie يتضمّن Secure، لن يتم تضمين ملف تعريف الارتباط إلا مع الطلبات المشفّرة التي تستخدم بروتوكول HTTPS، ولن يتم تضمين ملف تعريف الارتباط في طلبات HTTP. يمكن أن يساعد ذلك في إيقاف هجمات الوسيط، التي يتدخّل فيها المهاجم سرًا في الاتصالات بين المتصفّح والخادم لنقل المعلومات وربما تغييرها.

HTTPOnly

👉 يجب تضمين HTTPOnly تلقائيًا لجميع ملفات تعريف الارتباط. لا تحذف هذا الحقل إلا إذا كنت بحاجة إلى الوصول إلى JavaScript.

إذا كان عنوان Set-Cookie يتضمّن HTTPOnly، لا يمكن الوصول إلى ملف تعريف الارتباط باستخدام document.cookie. ويساعد ذلك في الحماية من أنواع معيّنة من الهجمات التي تستهدف ملفات تعريف الارتباط.

SameSite

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

إذا كان طلب الحصول على مورد من موقع إلكتروني مختلف عن الموقع الإلكتروني الذي تتم jego زيارته، يكون الطلب من عدة مواقع إلكترونية. يُعرف ملف تعريف الارتباط الذي تم ضبطه استجابةً لطلب على مستوى الموقع الإلكتروني باسم ملف تعريف ارتباط تابع لجهة خارجية. مزيد من المعلومات: ما هي ملفات تعريف الارتباط التابعة لجهات خارجية؟

تتحكّم سمة SameSite في ما إذا كان سيتم تضمين ملف تعريف ارتباط تابع لجهة خارجية في طلب معيّن. ويمكن أن تتضمّن ثلاث قيم محتملة: Strict أو Lax أو None.

متشدّدة

ولن يتم إرسال ملف تعريف الارتباط إلا استجابةً للطلبات الواردة من صفحة على الموقع الإلكتروني الذي ينتمي إليه ملف تعريف الارتباط. على سبيل المثال، لنفترض أنّ أحد المستخدِمين يزور cats.example ويكون لديه ملفّ تعريف ارتباط تم ضبطه باستخدام السمة SameSite=Strict. في وقت لاحق، ينتقل المستخدِم إلى موقع إلكتروني مختلف، ويتبع رابطًا يؤدي إلى صفحة على cats.example. لن يتم تضمين ملف تعريف الارتباط الذي تم ضبطه في هذا الطلب.

Lax

وتعمل هذه السمة بالطريقة نفسها التي تعمل بها السمة Strict، باستثناء أنّ المتصفّح سيتضمّن أيضًا ملف تعريف الارتباط عندما يتبع المستخدم رابطًا يؤدي إلى الموقع الإلكتروني الأصلي لملف تعريف الارتباط. (في مثالStrict السابق، سيتم تضمين ملف تعريف الارتباط عندما يتبع المستخدم cats.example.) Lax هو الإعداد التلقائي، إذا لم يتم تضمين سمة SameSite في عنوان Set-Cookie.

بدون

بدون قيود: سيتم تضمين ملف تعريف الارتباط مع الطلب، سواء كان على مستوى الموقع الإلكتروني أم على مستوى المواقع الإلكترونية المختلفة. مع SameSite=None، يجب أن تتضمّن ملفّ تعريف الارتباط أيضًا سمة Secure.

اطّلِع على مزيد من المعلومات: ملفات تعريف الارتباط الموضّحة للسمة SameSite.

ملفات تعريف الارتباط المقسَّمة

👉 يجب تضمين سمة Partitioned تلقائيًا إذا كنت تنشئ ملف تعريف ارتباط تابعًا لجهة خارجية، ما لم تكن متأكدًا من أنّه يجب مشاركته في عمليات تضمين متعددة.

تتيح لك هذه السمة تفعيل ملف تعريف ارتباط لتقسيم مساحة التخزين، مع الاحتفاظ بملف تعريف ارتباط منفصل في "علبة ملفات تعريف الارتباط" لكل موقع إلكتروني من المستوى الأعلى. يتم ضبط ملفات تعريف الارتباط باستخدام مفتاحَين، أحدهما من الموقع الإلكتروني على المستوى الأعلى والآخر من النطاق الذي يضبطها.

على سبيل المثال، لنفترض أنّ الموقع الإلكتروني "أ" والموقع الإلكتروني "ب" يتضمّنان إطارًا iframe من الموقع الإلكتروني "ج". لا يمكن للإطار المضمّن في الموقع الإلكتروني "أ" الوصول إلى ملف تعريف ارتباط مُقسَّم تم ضبطه من خلال الإطار المضمّن في الموقع الإلكتروني "ب": ملف تعريف ارتباط AC منفصل عن ملف تعريف ارتباط BC.

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

تُعرف ملفات تعريف الارتباط التي تحتوي على سمة Partitioned باسم CHIPS: ملفات تعريف الارتباط في الحالة المقسَّمة المنفصلة.

يجب أن تحتوي ملفات تعريف الارتباط المُقسَّمة على السمة Secure.

اطّلِع على مزيد من المعلومات: ملفات تعريف الارتباط في الحالة المقسَّمة المنفصلة.

Expires وMax-Age

👉 تجنَّب استخدام السمتَين Max-Age وExpires ما لم تكن بحاجة إلى ملف تعريف ارتباط يستمر لفترة أطول من الجلسة الحالية. تُنهي المتصفّحات صلاحية ملفات تعريف الارتباط، لذا لا فائدة من ضبط تاريخ انتهاء صلاحية بعد سنوات. بدلاً من ذلك، ننصحك بإعادة تحميل ملفات تعريف الارتباط عندما يعاود أحد المستخدِمين زيارة موقعك الإلكتروني.

يمكنك تحديد تاريخ ووقت Expires أو Max-Age بالثواني، بعد ذلك يجب حذف ملف تعريف الارتباط ولن يتم إرساله بعد ذلك. على سبيل المثال:

  • Set-Cookie:cat=tabby; Expires=Tue, 31 Dec 2999 23:59:59 GMT;
  • Set-Cookie:cat=tabby; Max-Age=86400

في حال عدم تحديد سمة Max-Age أو Expires، سيتم حذف ملف تعريف ارتباط عند انتهاء الجلسة الحالية. يُعرف هذا النوع من ملفات تعريف الارتباط أحيانًا باسم ملف تعريف ارتباط الجلسة.

النطاق

👉 ما لم تكن بحاجة إلى تضمين ملف تعريف ارتباط مع الطلبات المرسَلة إلى النطاقات الفرعية، لا تُدرِج سمة Domain.

إذا كان رأس Set-Cookie يحتوي على سمة Domain، سيتم تضمين ملف تعريف الارتباط مع الطلبات إلى النطاق المحدّد وأيّ من نطاقاته الفرعية.

إذا لم يتضمّن عنوان Set-Cookie سمة Domain، لن يتم تضمين ملف تعريف الارتباط مع الطلبات إلى النطاقات الفرعية.

بعبارة أخرى، يؤدي تضمين سمة Domain إلى تقليل القيود المفروضة على النطاق.

على سبيل المثال، في حال تلقّي ردّ من الموقع الإلكتروني cats.example:

  • Set-Cookie:cat=tabby
    لن يتم تضمين ملف تعريف الارتباط إلا مع الطلبات المرسَلة إلى cats.example.
  • Set-Cookie:cat=tabby; Domain=cats.example
    سيتم تضمين ملف تعريف الارتباط مع الطلبات المرسَلة إلى cats.example، بالإضافة إلى أي طلبات للحصول على موارد على النطاقات الفرعية، مثل fluffy.cats.example أو user.assets.cats.example.

المسار

👉 أدرِج Path=/ مع ملفّ تعريف ارتباط إذا كنت بحاجة إلى تضمين ملفّ تعريف الارتباط في جميع الطلبات إلى أي مسار على موقعك الإلكتروني. لا تعتمد على Path لحماية الأمان.

في حال تضمين سمة Path في عنوان استجابة Set-Cookie، لن يتم تضمين ملف تعريف الارتباط الذي تم ضبطه إلا في طلبات عناوين URL (على الموقع الإلكتروني الذي ضبط ملف تعريف الارتباط) التي تتطابق مع قيمة Path.

على سبيل المثال:

  • Set-Cookie:cat=tabby; Path=/articles
    سيتم تضمين ملف تعريف الارتباط لطلب أي مسار عنوان URL يبدأ بـ /articles:
    https://cats.example/articles/tabby/index.html
    https://cats.example/articles/breeds/tabby/index.html
    https://cats.example/images/tabby.jpg
    https://cats.example/en/articles/tabby/index.html
  • Set-Cookie:cat=tabby; Path=/
    ستتضمّن جميع الطلبات التي يتم إجراؤها على أي عنوان URL على الموقع الإلكتروني ملف تعريف الارتباط.

إذا لم يتضمّن عنوان استجابة Set-Cookie قيمة Path، لن يتم تضمين ملف تعريف الارتباط إلا مع الطلبات الموجّهة إلى الدليل نفسه. على سبيل المثال، تخيل أنّه تم ضبط ملف تعريف ارتباط cat=tabby استجابةً لطلب cats.example/images/tabby.jpg.. في حال عدم ضبط Path، لن يتم تضمين ملف تعريف الارتباط إلا مع طلبات الملفات ضمن الدليل cats.example/images.

إصدارات تجريبية

  • 1pc.glitch.me: عرض توضيحي لملفات تعريف الارتباط الخاصة بالطرف الأول
  • 3pc.glitch.me: عرض توضيحي لملفات تعريف الارتباط التابعة لجهات خارجية

الأدوات

التعرف على المزيد