ملف تعريف الارتباط هو جزء من البيانات المخزّنة في المتصفّح ويتم استخدامه للحفاظ على الحالة والمعلومات الأخرى التي يحتاجها الموقع الإلكتروني لتنفيذ ميزاته.
ملف تعريف الارتباط هو ملف صغير تخزّنه المواقع الإلكترونية على أجهزة المستخدمين، وتتنقل المعلومات التي يخزنها بين المتصفّح والموقع الإلكتروني.
كل ملف تعريف ارتباط هو زوج مفتاح وقيمة بالإضافة إلى عدد من السمات التي تتحكّم في وقت استخدام ملف تعريف الارتباط ومكانه. وتُستخدَم هذه السمات لضبط بيانات مثل تواريخ انتهاء الصلاحية أو الإشارة إلى أنّه يجب إرسال ملف تعريف الارتباط عبر بروتوكول HTTPS فقط. يمكنك ضبط ملف تعريف ارتباط في عنوان HTTP أو من خلال واجهة JavaScript.
وتعدّ ملفات تعريف الارتباط إحدى الطرق المتاحة لإضافة حالة دائمة إلى المواقع الإلكترونية. على مرّ السنين، نمت إمكانات هذه الأدوات وتطوّرت، ولكنّها تركت المنصة مع بعض المشاكل القديمة. لحلّ هذه المشكلة، تغيّر المتصفّحات (بما في ذلك Chrome وFirefox وEdge) سلوكها لفرض المزيد من الإعدادات التلقائية التي تحافظ على الخصوصية.
أمثلة على استخدام ملفات تعريف الارتباط
لنفترض أنّ لديك مدوّنة تريد عرض إعلان ترويجي "الميزات الجديدة" فيها لاطلاع المستخدِمين عليها. يمكن للمستخدمين رفض العرض الترويجي ولن يظهر لهم مرة أخرى لبعض الوقت. يمكنك تخزين هذه الإعدادات المفضّلة في ملف تعريف ارتباط، وضبطه لتنتهي صلاحيته بعد شهر (2,600,000 ثانية)، وإرساله عبر HTTPS فقط. سيظهر العنوان على النحو التالي:
Set-Cookie: promo_shown=1; Max-Age=2600000; Secure
عندما يطّلع القارئ على صفحة تستوفي هذه المتطلبات، أي أنّه يستخدم اتصالاً آمنًا وأنّ ملف تعريف الارتباط لم يمر عليه أقل من شهر، سيرسل متصفحه هذا العنوان في طلبه:
Cookie: promo_shown=1
يمكنك أيضًا إضافة ملفات تعريف الارتباط المتاحة لهذا الموقع الإلكتروني وقراءتها في JavaScript باستخدام
document.cookie
. سيؤدي تحديد القيمة document.cookie
إلى إنشاء ملف تعريف ارتباط باستخدام هذا المفتاح أو
إلغاءه. على سبيل المثال، يمكنك تجربة ما يلي في وحدة تحكم JavaScript في متصفحك:
→ document.cookie = "promo_shown=1; Max-Age=2600000; Secure"
← "promo_shown=1; Max-Age=2600000; Secure"
ستؤدي قراءة document.cookie
إلى إخراج جميع ملفات تعريف الارتباط التي يمكن الوصول إليها في السياق الحالي، مع فصل كل ملف تعريف ارتباط بفاصلة منقوطة:
→ document.cookie;
← "promo_shown=1; color_theme=peachpuff; sidebar_loc=left"
إذا جرّبت ذلك على مجموعة من المواقع الإلكترونية الرائجة، ستلاحظ أنّ معظم
هذه المواقع الإلكترونية تضع أكثر من ثلاثة ملفات تعريف ارتباط. وفي معظم الحالات، يتم إرسال ملفات تعريف الارتباط هذه عند كل طلب فردي إلى ذلك النطاق، وهو ما ينتج عنه آثار متعددة. غالبًا ما يكون معدل نقل البيانات للتحميل أكثر تقييدًا من معدل نقل البيانات للتنزيل بالنسبة إلى
المستخدِمين، لذا فإنّ النفقات العامة لجميع الطلبات الصادرة تؤدي إلى تأخير في وقت
الوصول إلى أول بايت. يجب أن تكون مدروسًا في عدد ملفات تعريف الارتباط التي تحدّدها وحجمها. استخدِم
السمة Max-Age
للمساعدة في التأكّد من عدم بقاء ملفات تعريف الارتباط في الذاكرة
لفترة أطول من اللازم.
ما هي ملفات تعريف الارتباط التابعة للطرف الأول والتابعة لجهات خارجية؟
إذا عدت إلى مجموعة المواقع الإلكترونية نفسها التي كنت تطّلع عليها من قبل، قد تلاحظ أنّه تمّ وضع ملفات تعريف ارتباط لمجموعة متنوعة من النطاقات، وليس فقط النطاق الذي كنت تزوره حاليًا. تُعرف ملفات تعريف الارتباط التي تتطابق مع نطاق الموقع الإلكتروني الحالي، أي ما يتم عرضه في شريط عناوين المتصفّح، باسم ملفات تعريف الارتباط التابعة للطرف الأول. وبالمثل، يُشار إلى ملفات تعريف الارتباط من نطاقات غير الموقع الإلكتروني الحالي باسم ملفات تعريف الارتباط التابعة لجهات خارجية. وهذا ليس تصنيفًا مطلقًا ولكنه يتناسب مع سياق المستخدم. ويمكن أن يكون ملف تعريف الارتباط نفسه إما "طرفًا أولًا" أو طرفًا ثالثًا اعتمادًا على الموقع الإلكتروني الذي كان المستخدم يتصفّحه في ذلك الوقت.
لنفترض أنّ إحدى مشاركات مدونتك تتضمّن
صورة لبطة رائعة جدًا، وأنّها مستضافة على
/blog/img/amazing-cat.png
. ولأن هذه صورة مذهلة، ويستخدمها شخص آخر
مباشرةً على موقعه. إذا زار أحد الزائرين مدونتك وكان لديه ملف تعريف الارتباط
promo_shown
، عندما يشاهد amazing-cat.png
على
الموقع الإلكتروني الخاص بالمستخدم الآخر، سيتم إرسال ملف تعريف الارتباط هذا في الطلب الخاص بالصورة. وهذا الإجراء
ليس مفيدًا بشكل خاص لأي شخص لأنّه لا يتم استخدام promo_shown
لأي غرض
على موقع هذا الشخص الآخر الإلكتروني، بل يؤدي فقط إلى زيادة النفقات العامة للطلب.
إذا كان هذا تأثيرًا غير مقصود، لماذا تريد إجراء ذلك؟ وهذه المحاولة هي الآلية التي تسمح للمواقع الإلكترونية بالاحتفاظ بالحالة عند استخدامها في سياق تابع لجهة خارجية. على سبيل المثال، إذا أدرجت فيديو على YouTube في موقعك الإلكتروني، سيظهر للزائرين خيار "المشاهدة لاحقًا" في مشغّل الفيديو. إذا كان الزائر مسجّلاً الدخول إلى YouTube، ستتوفّر هذه الجلسة في المشغّل المضمّن من خلال ملف تعريف ارتباط تابع لجهة خارجية، ما يعني أنّ الزر "المشاهدة لاحقًا" سيحفظ الفيديو دفعة واحدة بدلاً من مطالبته بتسجيل الدخول أو توجيهه للخروج من صفحتك والعودة إلى YouTube.
من السمات الثقافية للويب أنّه يميل إلى أن يكون مفتوحًا
تلقائيًا. وهذا ما سمح للكثير من المستخدمين بإنشاء
المحتوى والتطبيقات الخاصة بهم على المنصة. ومع ذلك، أدّى ذلك أيضًا إلى ظهور عدد من
المخاوف المتعلقة بالأمان والخصوصية. تعتمد هجمات التزوير في الطلبات بين المواقع الإلكترونية (CSRF) على
حقيقة أنّ ملفات تعريف الارتباط يتم إرفاقها بأي طلب موجَّه إلى مصدر معيّن، بغض النظر عن
المُقدّم للطلب. على سبيل المثال، إذا زرت evil.example
، يمكن أن يؤدي ذلك إلى
بدء طلبات إلى your-blog.example
، وسيُرفِق المتصفّح
ملفات تعريف الارتباط المرتبطة. إذا لم تكن مدونتك دقيقة في التحقّق من صحة هذه
الطلبات، يمكن أن يؤدي ذلك إلى أن يتّخذ evil.example
إجراءات مثل حذف المشاركات أو إضافة
المحتوى الخاص به.
أصبح المستخدمون أيضًا أكثر إدراكًا لكيفية استخدام ملفات تعريف الارتباط لتتبُّع
نشاطهم على عدة مواقع إلكترونية. ومع ذلك، لم تكن هناك حتى الآن طريقة لتحديد الغرض من ملف تعريف الارتباط بوضوح. يجب عدم إرسال ملف تعريف الارتباط promo_shown
إلا في سياق الطرف الأول، في حين أنّ ملف تعريف الارتباط الخاص بالجلسة والخاص بأداة ما، والذي يعني أن يكون مضمّنًا في مواقع إلكترونية أخرى، يكون متوفرًا عن قصد لتقديم حالة تسجيل الدخول في سياق تابع لجهة خارجية.
يمكنك تحديد نيتك بوضوح في ملف تعريف ارتباط من خلال ضبط سمة SameSite المناسبة.
لتحديد ملفات تعريف الارتباط التابعة للطرف الأول وضبط السمات المناسبة، اطّلِع على وصفات ملفات تعريف الارتباط التابعة للطرف الأول.