عندما يستجيب خادم ويب لطلب أحد الموارد، يمكن أن يُضمِّن الخادم عنوان
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: عرض توضيحي لملفات تعريف الارتباط التابعة لجهات خارجية
الأدوات
- عرض ملفات تعريف الارتباط وإضافتها وتعديلها وحذفها في "أدوات مطوّري البرامج في Chrome"
- أداة تحليل "مبادرة حماية الخصوصية"
التعرف على المزيد
- وصفات ملفات تعريف الارتباط الخاصة بالطرف الأول
- ما هي ملفات تعريف الارتباط؟
- ما هي ملفات تعريف الارتباط التابعة لجهات خارجية؟
- طلب HTTP والاستجابة
- أدوات ملفات تعريف الارتباط
- العروض التوضيحية لملفات تعريف الارتباط
- استخدام ملفات تعريف الارتباط HTTP
- ملفات تعريف الارتباط الموضّحة للسمة SameSite
- OWASP: ملفات تعريف الارتباط