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

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

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

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

إرسال ملف تعريف الارتباط نفسه في ثلاثة سياقات مختلفة
يتم إرسال ملف تعريف ارتباط في سياق تابع لجهة خارجية عند زيارة صفحات مختلفة.

إحدى الخصائص الثقافية للويب هي أنه يميل إلى الانفتاح من خلال الافتراضي. وهذا جزء مما جعل من الممكن للعديد من الأشخاص إنشاء المحتوى والتطبيقات الخاصة بها هناك. ومع ذلك، فقد أدى ذلك أيضًا إلى ظهور عدد من المخاوف المتعلقة بالأمان والخصوصية. تعتمد هجمات تزوير الطلبات من مواقع إلكترونية متعددة على أن ملفات تعريف الارتباط تكون مرتبطة بأي طلب إلى مصدر معيّن، بغض النظر الذي يبدأ الطلب. على سبيل المثال، إذا زرت evil.example، يمكن عندئذٍ أن إرسال طلبات إلى your-blog.example، وسيتولى المتصفح إرفاق الملفات ملفات تعريف الارتباط المرتبطة. إذا لم تكن مدونتك على علم بكيفية التحقق من صحة هذه الطلبات ثم قد يؤدي evil.example إلى تشغيل إجراءات مثل حذف المشاركات أو إضافة المحتوى الخاص بهم.

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

يمكنك تحديد هدفك بوضوح باستخدام ملف تعريف ارتباط عن طريق ضبط سمة SameSite المناسبة.

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