كيف تعمل ملفات تعريف الارتباط؟
ملف تعريف الارتباط زوج صغير name=value يضبطه الخادم عبر ترويسة Set-Cookie ويعيده المتصفح في الطلبات اللاحقة إلى الموقع نفسه، وهكذا تبقى الجلسات بين طلبات HTTP عديمة الحالة. تحدد سماته مداه وأمانه: Expires/Max-Age (العمر)، وDomain وPath (النطاق)، وSecure (عبر HTTPS فقط)، وHttpOnly (مخفي عن JavaScript)، وSameSite (الإرسال بين المواقع).
ملاحظة أمنية: ملف تعريف ارتباط الجلسة بدون Secure وHttpOnly يمكن سرقته عبر HTTP غير المشفّر أو عبر سكربت محقون. افحص السمات في كل ملف تعريف ارتباط خاص بالتوثيق، وتأكد أن معرّف الجلسة يتغير بعد تسجيل الدخول.
كيفية استخدام محلّل ملفات تعريف الارتباط (Cookies)
- الصق ترويسة Set-Cookie واحدة في كل سطر (البادئة «Set-Cookie:» اختيارية) أو استجابة خام كاملة.
- تُحدَّث النتائج مباشرةً: يلخّص جدول ملفات تعريف الارتباط السمات ومدة الصلاحية والحجم.
- راجع النتائج من الأعلى خطورةً إلى الأدنى؛ ولكل منها إصلاح مقترح.
- انسخ الترويسات المحصَّنة وعدّل HttpOnly لملفات تعريف الارتباط التي يجب أن تقرأها السكربتات.
مزايا محلّل ملفات تعريف الارتباط (Cookies)
- يحلّل أي عدد من ترويسات Set-Cookie، بما في ذلك الاستجابات الخام أو مخرجات curl -i
- يشرح كل سمة: Secure وHttpOnly وSameSite وDomain وPath وExpires وMax-Age وPartitioned وPriority
- القواعد: SameSite=None يتطلب Secure، وقيود البادئتين __Host-/__Secure-، ونطاقات اللواحق العامة (public suffix)، والتواريخ غير الصالحة، والحد الأقصى لمدة الصلاحية البالغ 400 يوم، وحد الحجم البالغ 4096 بايت
- فحوصات أكثر صرامة لملفات تعريف الارتباط التي تبدو خاصة بالجلسات أو الرموز أو أسرار CSRF
- درجة لكل ملف تعريف ارتباط ودرجة إجمالية مع نتائج مرتّبة حسب الخطورة
- ترويسات Set-Cookie محصَّنة جاهزة للنسخ واللصق
مثال على محلّل ملفات تعريف الارتباط (Cookies)
ملف تعريف ارتباط للجلسة يفتقر إلى Secure
الإدخال:
Set-Cookie: sessionId=a3f9c2e1b7d4; Path=/; HttpOnlyالنتيجة:
sessionId · Secure: no · HttpOnly: yes · SameSite: (default Lax) · Lifetime: session · Score: 55
High — Missing Secure: the cookie can be sent over plain HTTP and intercepted.
Medium — No SameSite attribute: set it explicitly.
Hardened: Set-Cookie: sessionId=a3f9c2e1b7d4; Path=/; Secure; HttpOnly; SameSite=Laxالأسئلة الشائعة حول محلّل ملفات تعريف الارتباط (Cookies)
ما البادئتان __Host- و__Secure-؟
تتطلب البادئة __Secure- سمة Secure؛ أما __Host- فتحظر إضافةً إلى ذلك سمة Domain وتتطلب Path=/، ما يربط ملف تعريف الارتباط بمضيف واحد بالضبط. وترفض المتصفحات ملفات تعريف الارتباط ذات البادئة التي تخالف هذه القواعد.
لماذا يتطلب SameSite=None سمة Secure؟
تتجاهل المتصفحات ملفات تعريف الارتباط ذات SameSite=None إذا لم تحمل Secure. ولا تلزم القيمة None إلا للاستخدام المشروع عبر المواقع، مثل الأدوات المضمّنة (widgets) أو تسجيل الدخول الموحّد (SSO) من طرف ثالث.
ما الحد الأقصى لحجم ملف تعريف الارتباط؟
نحو 4096 بايت لكل ملف تعريف ارتباط شاملةً الاسم والقيمة والسمات؛ كما تحدّ المتصفحات عدد ملفات تعريف الارتباط لكل نطاق. احتفظ ببيانات الجلسة في جانب الخادم وخزّن معرّفاً فقط.
ماذا تعني الدرجة؟
100 مطروحاً منها العقوبات: 30 لكل نتيجة عالية الخطورة و15 لكل نتيجة متوسطة الخطورة. وتُقيَّم ملفات تعريف ارتباط الجلسات أو المصادقة بصرامة أكبر من ملفات تعريف ارتباط التفضيلات.
هل يمكنني لصق استجابة كاملة؟
نعم — تستخرج الأداة كل ترويسة Set-Cookie من الاستجابة الخام أو مخرجات curl -i. ولا يغادر أي شيء متصفحك.
ملاحظات تقنية
يتبع التحليل RFC 6265bis: أول زوج name=value هو ملف تعريف الارتباط، والوحدات (tokens) التالية المفصولة بفواصل منقوطة هي سمات تُطابَق دون تمييز بين الأحرف الكبيرة والصغيرة. ويُبلَّغ عن السمات غير المعروفة لأن المتصفحات تتجاهلها بصمت — وهي مصدر شائع لأخطاء من نوع «لماذا لا يُطبَّق SameSite» الناجمة عن أخطاء إملائية.
عندما يدمج وكيل (proxy) عدة ترويسات Set-Cookie في قيمة واحدة مفصولة بفواصل، يعيد المحلّل فصلها مع الحفاظ على تواريخ Expires (التي تحتوي على فواصل) سليمة.
المراجع
- RFC 6265: HTTP State Management Mechanismكيف تُضبط ملفات تعريف الارتباط وتُرسَل: سمات Set-Cookie (Expires وMax-Age وDomain وPath وSecure وHttpOnly) وقواعد نطاقها.
- Using HTTP cookies — MDNعمر ملف تعريف الارتباط ونطاقه وسمات Secure/HttpOnly/SameSite وآثارها الأمنية.
- OWASP Cheat Sheet Series: Session Managementإنتروبيا معرّف الجلسة وسمات ملف تعريف الارتباط والانتهاء والتجديد بعد تسجيل الدخول ومعالجة تسجيل الخروج.