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

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

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

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

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