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

ملف تعريف الارتباط هو جزء من البيانات المخزّنة في المتصفّح ويتم استخدامه للحفاظ على الحالة والمعلومات الأخرى التي يحتاجها الموقع الإلكتروني لتنفيذ ميزاته.

ملف تعريف الارتباط هو ملف صغير تخزّنه المواقع الإلكترونية على أجهزة المستخدمين، وتتنقل المعلومات التي يخزنها بين المتصفّح والموقع الإلكتروني.

كل ملف تعريف ارتباط هو زوج مفتاح وقيمة بالإضافة إلى عدد من السمات التي تتحكّم في وقت استخدام ملف تعريف الارتباط ومكانه. وتُستخدَم هذه السمات لضبط بيانات مثل تواريخ انتهاء الصلاحية أو الإشارة إلى أنّه يجب إرسال ملف تعريف الارتباط عبر بروتوكول HTTPS فقط. يمكنك ضبط ملف تعريف ارتباط في عنوان HTTP أو من خلال واجهة JavaScript.

وتعدّ ملفات تعريف الارتباط إحدى الطرق المتاحة لإضافة حالة دائمة إلى المواقع الإلكترونية. على مرّ السنين، نمت إمكانات هذه الأدوات وتطوّرت، ولكنّها تركت المنصة مع بعض المشاكل القديمة. لحلّ هذه المشكلة، تغيّر المتصفّحات (بما في ذلك Chrome وFirefox وEdge) سلوكها لفرض المزيد من الإعدادات التلقائية التي تحافظ على الخصوصية.

أمثلة على استخدام ملفات تعريف الارتباط

لنفترض أنّ لديك مدوّنة تريد عرض إعلان ترويجي "الميزات الجديدة" فيها لاطلاع المستخدِمين عليها. يمكن للمستخدمين رفض العرض الترويجي ولن يظهر لهم مرة أخرى لبعض الوقت. يمكنك تخزين هذه الإعدادات المفضّلة في ملف تعريف ارتباط، وضبطه لتنتهي صلاحيته بعد شهر (2,600,000 ثانية)، وإرساله عبر HTTPS فقط. سيظهر العنوان على النحو التالي:

Set-Cookie: promo_shown=1; Max-Age=2600000; Secure
ثلاثة ملفات تعريف ارتباط يتم إرسالها إلى متصفّح من خادم في استجابة
تعمل الخوادم على ضبط ملفات تعريف الارتباط باستخدام العنوان Set-Cookie.

عندما يطّلع القارئ على صفحة تستوفي هذه المتطلبات، أي أنّه يستخدم اتصالاً آمنًا وأنّ ملف تعريف الارتباط لم يمر عليه أقل من شهر، سيرسل متصفحه هذا العنوان في طلبه:

Cookie: promo_shown=1
ثلاثة ملفات تعريف ارتباط يتم إرسالها من متصفح إلى خادم في أحد الطلبات
يُرسِل المتصفّح ملفات تعريف الارتباط مرة أخرى في العنوان Cookie.

يمكنك أيضًا إضافة ملفات تعريف الارتباط المتاحة لهذا الموقع الإلكتروني وقراءتها في 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"
الوصول إلى ملفات تعريف الارتباط باستخدام JavaScript داخل المتصفّح
يمكن لبرنامج JavaScript الوصول إلى ملفات تعريف الارتباط باستخدام document.cookie.

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

لتحديد ملفات تعريف الارتباط التابعة للطرف الأول وضبط السمات المناسبة، اطّلِع على وصفات ملفات تعريف الارتباط التابعة للطرف الأول.