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