الخلاصة

  • يصف draft-ietf-httpbis-layered-cookies-02 ملفات الارتباط بوصفها سلطة محيطة: قد يحدد طرف بعيد المورد، بينما يرفق وكيل المستخدم الحالة من دون أن يعرف ذلك الطرف السر.
  • وجود Cookie في الطلب يثبت قرار الإرفاق وفق قواعد الوكيل، لا هوية الإنسان أو موافقته أو تفويض العملية أو نجاحها. يحتاج الخادم إلى أدلة مستقلة.

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

كانت credential صحيحة، لكن تعيين الفعل جاء من جهة أخرى. الخادم خلط بين السلطة التي حملها المتصفح وبين النية التي لم يثبتها أحد.

نُشرت المراجعة 02 من Cookies: HTTP State Management Mechanism في 21 مايو 2026 بوصفها Internet-Draft نشطة في مجموعة HTTP التابعة لـIETF، وتنتهي في 22 نوفمبر. تستهدف مسار المعايير وتقول إنها ستستبدل RFC 6265 و6265bis إذا اعتمدت. لا تزال وثيقة عمل، لا RFC ولا دليلاً على سلوك كل المتصفحات.

السلطة المحيطة تفصل التعيين عن الإذن

يرفق وكيل المستخدم ملفات الارتباط بالطلبات المطابقة تلقائياً. يمكن لطرف بعيد أن يحدد URL عبر نموذج أو تحويل من دون معرفة القيمة المخفية.

بهذا يصبح عنوان المورد هو التعيين، وCookie هي سلطة منفصلة يقدمها المتصفح. قد ينفذ الخادم عملاً عيّنه المهاجم كما لو أن المستخدم فوّضه.

هذه بنية CSRF والنائب الملتبس. لا يكفي أن تكون الجلسة صحيحة؛ يجب ربط الطلب بنية أو freshness أو مادة anti-CSRF أو تأكيد يناسب الخطر.

بعد ذلك فقط يأتي قرار التفويض، ثم إيصال commit. ملف الارتباط مدخل في السلسلة وليس السلسلة كلها.

SameSite يقلل سياقات ولا يصادق الإنسان

يغير SameSite شروط الإرسال بين المواقع ويمكن أن يخفف مسارات مهمة من الطلبات العابرة. لكنه لا يرى الشخص ولا يثبت رضاه.

قد يحدث طلب في سياق same-site بفعل أتمتة أو واجهة مضللة أو جلسة مخترقة. القيمة الصحيحة تقول إن شرط الموقع تحقق، لا إن العملية أُجيزت.

ينبغي تسجيل نتيجة حساب السياق منفصلة عن دليل النية. إذا كانت العملية غير قابلة للعكس، لا يجوز أن يكون SameSite هو التوقيع الوحيد.

التحكم الجيد يبقى جيداً عندما نحافظ على حدوده. توسيعه إلى هوية يجعله صاحب مسؤولية لم يُصمم لها.

Secure وTLS لا يثبتان تاريخ القيمة

تطلب Secure الإرسال عبر قناة آمنة، عادة HTTP فوق TLS. يحمي TLS النقل ويصادق النظير وفق نموذجه.

لكن المتصفح يختار القيمة من مخزنه قبل إرسالها. قد يكون نطاق Domain أتاح لأخ شقيق وضعها، أو توجد قيمة بالاسم نفسه في Path آخر، أو ألغى الخادم الجلسة.

وصولها مشفرة لا يجيب عن هذه الأسئلة. ويحتفظ المشروع بتحذير تاريخي من أن Secure وحدها لا تمنح كل سلامة بروتوكول Cookie أمام مهاجم نشط.

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

Domain يحدد الوصول لا المؤلف

من دون Domain تكون cookie خاصة بالمضيف. ومع Domain تصل إلى المجال المحدد وفروعه المقبولة. قواعد اللاحقة العامة تمنع امتداداً إلى سجل مشترك، لكنها لا تجعل التطبيقات الشقيقة متعاونة.

يمكن لخادم شقيق أن يضع cookie للمجال الأب، فتصل إلى شقيق آخر. وقد لا يستطيع المستقبل تمييزها عن قيمة وضعها بنفسه.

الاسم والمجال يصفان مسار التوزيع. لا يثبتان الفريق أو التطبيق المؤلف. host-only و__Host- يضيّقان النطاق، لكن الخادم يظل مسؤولاً عن الجلسة.

أي إضافة لنطاق فرعي جديد تغير سطح السلطة حتى لو لم يتغير اسم cookie.

Path والمنفذ ليسا عزلاً كاملاً

Path يقرر متى تُرسل القيمة، لكنه لا يمنع استجابة من مسار من ضبط Cookie لمسار آخر. لذلك لا ينبغي وضع خدمات غير متبادلة الثقة في مسارات مضيف واحد والاعتماد على Cookie للحماية.

كما لا تعزل الكوكيز بحسب المنفذ. نموذج أصل الويب يميز scheme وhost وport، لكن تخزين Cookie يستخدم حدوداً مختلفة.

نقل خدمة إدارية إلى منفذ آخر قد يفصل العملية ولا يفصل credential. المطلوب مضيف مستقل أو حالة مربوطة سياقياً ومتحققاً منها خادمياً.

الرسم المعماري ليس دليلاً إذا اختلفت عنه خوارزمية الاسترجاع.

HttpOnly يمنع القراءة ولا يثبت المصدر

يحد HttpOnly الوصول عبر APIs غير HTTP مثل JavaScript. يقلل سطح السرقة المباشرة.

لا يمنع الإرفاق التلقائي، ولا يخفي القيمة عن الخادم، ولا يثبت من وضعها. قد يكون attacker قادراً على استعمال السلطة من دون قراءة السر أصلاً.

البادئات مثل __Secure- و__Host- تفرض شروط قبول إضافية، وهي مفيدة. لكنها لا تحول قيمة مخزنة إلى هوية بشرية أو إذن عمل.

كل خاصية يجب أن تُقاس بالتهديد الذي تغطيه وبالمتبقي بعدها.

الانتهاء سقف وليس وعد حفظ

Expires وMax-Age يحددان العمر الأقصى. قد يحذف الوكيل قبل ذلك بسبب quota أو memory أو privacy أو قرار المستخدم.

الغياب لا يثبت logout أو revocation. الوجود لا يثبت صلاحية جلسة الخادم. لكل جانب سجل مستقل.

الحذف بواسطة تاريخ ماض يحتاج إلى Domain وPath مطابقين. الاسم الصحيح ضمن نطاق خاطئ قد يترك credential أخرى.

يجب أن يلغي logout السلطة الخادمية أولاً، ثم يحاول التنظيف الدقيق ويتحقق من رفض القيمة القديمة.

الترتيب لا ينشئ سلطة

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

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

يسجل التدقيق وجود الغموض وبنية النطاق من دون حفظ الأسرار الخام. وتفرض التطبيقات سياسة صريحة للرفض أو الحل.

المصادر والحدود

تضم الحزمة المراجعة 02 وDatatracker وHTTP WG وRFC 6265 و6265bis وHTTP وTLS 1.3 وتعريفات WHATWG وIANA وPublic Suffix List.

تثبت النص ولا تثبت حادثة أو انتشاراً أو سلوك منتج. المثال الافتتاحي تحليلي.

المصادر