ملف تعريف الارتباط هو جزء من البيانات المخزّنة في المتصفّح ويتم استخدامه للحفاظ على الحالة والمعلومات الأخرى التي يحتاجها الموقع الإلكتروني لتنفيذ ميزاته.
ملف تعريف الارتباط هو ملف صغير تخزّنه المواقع الإلكترونية على أجهزة المستخدمين، وتتم مشاركة المعلومات التي يخزنها بين المتصفّح والموقع الإلكتروني.
كل ملف تعريف ارتباط هو زوج مفتاح وقيمة بالإضافة إلى عدد من السمات التي تتحكّم في وقت استخدام ملف تعريف الارتباط ومكانه. وتُستخدَم هذه السمات لضبط بيانات مثل تواريخ انتهاء الصلاحية أو الإشارة إلى أنّه يجب إرسال ملف تعريف الارتباط عبر بروتوكول 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
إلى إنشاء ملف تعريف ارتباط باستخدام هذا المفتاح أو
إلغاءه. على سبيل المثال، يمكنك تجربة ما يلي فيconsole 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 المناسبة.
لتحديد ملفات تعريف الارتباط التابعة للطرف الأول وضبط السمات المناسبة، اطّلِع على وصفات ملفات تعريف الارتباط التابعة للطرف الأول.