تعرَّف على كيفية ضبط ملفات تعريف الارتباط التابعة للطرف الأول لضمان الأمان والتوافق مع جميع المتصفّحات وتقليل فرص حدوث أعطال بعد إيقاف ملفات تعريف الارتباط التابعة لجهات خارجية نهائيًا.
يمكن أن تكون ملفات تعريف الارتباط تابعة للطرف الأول أو لجهة خارجية حسب سياق المستخدم، وذلك استنادًا إلى الموقع الإلكتروني الذي يستخدمه المستخدم في الوقت الحالي. إذا تطابق مخطط ملف تعريف الارتباط ونطاقه اللذين يمكن تسجيلهما مع صفحة المستوى الأعلى الحالية، أي ما يتم عرضه في شريط عناوين المتصفّح، يتم اعتبار ملف تعريف الارتباط واردًا من الموقع الإلكتروني نفسه الذي تم تسجيله باستخدام الصفحة، ويُشار إليه عمومًا باسم ملفات تعريف الارتباط الخاصة بالطرف الأول.
ويُشار عادةً إلى ملفات تعريف الارتباط الواردة من نطاقات أخرى غير الموقع الإلكتروني الحالي باسم ملفات تعريف الارتباط التابعة لجهات خارجية.
أفضل وصفات تحضير الكعك من الطرف الأول
إذا لم يتم استخدام ملف تعريف الارتباط الذي يتم ضبطه على مستوى المواقع الإلكترونية، على سبيل المثال، إذا كان يتم استخدامه لإدارة الجلسات على موقعك الإلكتروني ولم يتم استخدامه مطلقًا في إطار iframe على مستوى المواقع الإلكترونية، يتم استخدام ملف تعريف الارتباط هذا دائمًا في سياق الطرف الأول.
يمكن مشاركة ملفات تعريف الارتباط تلقائيًا على جميع المواقع الإلكترونية، ويمكن الوصول إليها باستخدام JavaScript وإرسالها عبر اتصالات HTTP، ما يعرّضك لبعض المخاطر المتعلقة بالخصوصية والأمان. نحن نعمل حاليًا على تحسين السلوك التلقائي، ولكن من خلال مبادرة حماية الخصوصية واقتراحات أخرى مثل ملفات تعريف الارتباط المرتبطة بالمصدر، هناك الكثير مما يمكنك تنفيذه اليوم من خلال ضبط سمات إضافية في ملفات تعريف الارتباط.
يُعدّ الإعداد التالي من أفضل الممارسات، إذ يضمن الأمان والتوافق مع جميع المتصفّحات لمعظم ملفات تعريف الارتباط التابعة للطرف الأول. سيوفّر لك قاعدة آمنة يمكنك تعديلها لمنح الأذونات عند الضرورة فقط. تتناول هذه المقالة أيضًا أنواع الوصفات لبعض حالات الاستخدام المحدّدة.
الوصفة
Set-Cookie:
__Host-cookie-name=cookie-value;
Secure;
Path=/;
HttpOnly;
Max-Age=7776000;
SameSite=Lax;
Host
هي بادئة اختيارية تجعل بعض السمات مطلوبة وتحظر غيرها:
- يجب أن يكون الحقل
Secure
متوفّرًا. - يجب حذف
Domain
- يجب أن يكون
Path
/
.
بعد إضافة Host
، يمكنك الاعتماد على المتصفّح للتحقّق مما إذا تم ضبط هذه السمات بما يتوافق مع قواعد __Host
ورفض ملف تعريف الارتباط في حال عدم استيفائه لهذه القواعد.
تحمي Secure
ملفات تعريف الارتباط من السرقة على الشبكات غير الآمنة لأنّها لا تسمح بإرسال ملفات تعريف الارتباط إلا عبر اتصالات HTTPS. إذا لم تكن قد نقلت موقعك الإلكتروني بالكامل إلى HTTPS، امنحه أولوية.
تحدّد السمة Domain
المضيفات التي يمكنها تلقّي ملفات تعريف الارتباط. يؤدي حذف هذا المَعلم إلى حصر ملف تعريف الارتباط بالمضيف الحالي للمستند، باستثناء النطاقات الفرعية: سيتم إرسال ملف تعريف الارتباط example.com
عند كل طلب إلى example.com
ولكن ليس عند الطلبات إلى images.example.com
. إذا كانت لديك تطبيقات مختلفة تعمل على نطاقات فرعية مختلفة، يقلل ذلك من خطر أن يسمح نطاق واحد تم اختراقه بالوصول إلى النطاقات الأخرى.
تشير القيمة Path
إلى المسار الذي يجب أن يتوفّر في عنوان URL المطلوب لكي يرسل المتصفّح عنوان Cookie
. ويعني ضبط السياسة Path=/
أنّه يتم إرسال ملف تعريف الارتباط إلى جميع مسارات عناوين URL على ذلك النطاق. يؤدي عدم ضبط Domain
وPath=/
إلى ربط ملف تعريف الارتباط بالمصدر قدر الإمكان، لذا يعمل بشكل مشابه لمساحة التخزين الأخرى من جهة العميل، مثل LocalStorage
. ولا يترتب على ذلك أي التباس بأنّ example.com/a
قد يتلقّى قيمًا مختلفة عن example.com/b
.
تضيف السمة HttpOnly
بعض الحماية من النصوص البرمجية الضارة التابعة لجهات خارجية على مواقعك الإلكترونية من خلال حظر الوصول إلى JavaScript. ويسمح هذا الإجراء بإرسال ملف تعريف ارتباط في رؤوس الطلبات فقط، ولا يتيح استخدامه من خلال JavaScript باستخدام document.cookie
.
Max-Age
تحدّ من مدة صلاحية ملف تعريف الارتباط لأنّ جلسات المتصفّح يمكن أن تستمر لفترة طويلة جدًا، ولا تريد أن تبقى ملفات تعريف الارتباط القديمة لفترة طويلة. وهو مناسب لملفات تعريف الارتباط قصيرة المدى، مثل جلسات المستخدمين أو حتى الجلسات الأقصر مثل الرموز المميّزة لإرسال النماذج. يتم تحديد السمة Max-Age
بالثواني، وفي المثال السابق، تم ضبطها على 7776000 ثانية، أي 90 يومًا. هذا خيار تلقائي معقول يمكنك تغييره حسب حالة الاستخدام.
SameSite=Lax
يحدّ من إرسال ملف تعريف الارتباط إلا في طلبات الموقع الإلكتروني نفسه. أي عندما يتطابق الطلب مع سياق التصفّح الحالي، وهو الموقع الإلكتروني الأعلى مستوى الذي يزوره المستخدم حاليًا، ويظهر هذا الموقع في شريط المواقع الجغرافية. SameSite=Lax
هو الإعداد التلقائي في المتصفّحات الحديثة، ولكن من الممارسات الجيدة تحديده للتوافق مع جميع المتصفّحات التي قد تتضمّن إعدادات تلقائية مختلفة. من خلال وضع علامة على ملف تعريف الارتباط بشكل صريح على أنّه مخصّص للموقع الإلكتروني نفسه فقط، فإنّك تقيّده بسياقات الطرف الأول، ولن تحتاج إلى إجراء تغييرات على ملف تعريف الارتباط هذا عند إيقاف ملفات تعريف الارتباط التابعة لجهات خارجية.
لمزيد من المعلومات عن سمات ملفات تعريف الارتباط المختلفة، اطّلِع على مستندات Set-Cookie
على MDN.
وصفات تحضير ملفات تعريف الارتباط للطرف الأول للمواقع الإلكترونية ذات النطاقات الفرعية
إذا كان لديك موقع إلكتروني يتضمّن نطاقات فرعية وأردت إنشاء جلسة واحدة على مستوى جميع النطاقات الفرعية، يمكن أن تكون البادئة Host
قاسية جدًا. على سبيل المثال، يمكن أن يتضمّن news.site
نطاقات فرعية للمواضيع، مثل finance.news.site
وsport.news.site
، ويمكنك إنشاء جلسة مستخدم واحدة على جميعها. في هذه الحالة، استخدِم البادئة __Secure
بدلاً من __Host
وحدِّد Domain
.
الوصفة
Set-Cookie:
__Secure-cookie-name=cookie-value;
Secure;
Domain=news.site;
Path=/;
HttpOnly;
Max-Age=7776000;
SameSite=Lax;
Secure
هي بادئة اختيارية تؤكد متطلبات أقل من Host
: ولا تتطلب سوى ضبط ملف تعريف الارتباط باستخدام السمة Secure
.
حظر الوصول إلى ملفات تعريف الارتباط الخاصة بالطرف الأول في الطلبات التي يتمّ بدؤها من مواقع إلكترونية تابعة لجهات خارجية
على الرغم من أنّه لا يتم إرسال ملفات تعريف الارتباط SameSite=Lax
في الطلبات الفرعية على مستوى مواقع إلكترونية مختلفة (على سبيل المثال، عند تحميل صور أو إطارات iframe مضمّنة على موقع إلكتروني تابع لجهة خارجية)، يتم إرسالها عندما ينتقل المستخدم إلى الموقع الإلكتروني الأصلي (على سبيل المثال، عند النقر على رابط من موقع إلكتروني مختلف).
يمكنك فرض قيود إضافية على الوصول إلى ملفات تعريف الارتباط ومنع إرسالها مع الطلبات التي يتم بدءها من مواقع إلكترونية تابعة لجهات خارجية باستخدام SameSite=Strict
. يكون ذلك مفيدًا عندما تكون لديك ملفات تعريف ارتباط ذات صلة بوظائف ستظلّ دائمًا متاحة بعد التنقّل الأوّلي، مثل تغيير كلمة مرور أو إجراء عملية شراء.
الوصفة
Set-Cookie:
__Host-cookie-name=cookie-value;
Secure;
Path=/;
HttpOnly;
Max-Age=7776000;
SameSite=Strict;