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

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

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

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

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