محتويات الدورة

أمان الويب / الأساسي: عقود الثقة والهوية في الويب / الدرس 4

الجلسات وملفات الارتباط وحالة المتصفح

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

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • اشرح Secure وHttpOnly وSameSite ونطاق المضيف والمسار.
  • افصل وجود ملف الارتباط من جلسة صالحة ومفوضة.

ينقل ملف الارتباط الحالة ولا يثبت الإذن

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

تقيد Secure الإرسال بسياق آمن وفق قواعد المتصفح، ولا تشفر المخزن أو تفوض المستلم. تقيد HttpOnly قراءة النص البرمجي للملف، لا كل أفعاله أو CSRF. تضبط SameSite بعض الإرسال بين المواقع وتوافق تدفقات الدخول والتضمين؛ والموقع غير الأصل. يحذف ملف المضيف فقط Domain، أما Path فيحدد المطابقة لا حد أمان موثوقاً. تضيف بادئات مثل __Host- شروطاً موثقة حيث تدعم. تحقق من المتصفحات المقصودة ولا تفترض تطابق كل سمة على جميع العملاء.

اقرأ رأساً دون تثبيت سياسة

الرأس مثال جلسة خيالي بلا Domain وبمسار جذري، وقيمته العامة ليست اعتماداً. اختيار Lax توضيحي لا توصية لكل تطبيق؛ يحتاج العبور بين المواقع تصميماً مراجعاً. لـ SameSite=None شروط سياق آمن إضافية في الإرشاد الحالي، وقد تتطور الافتراضات والتوافق. لا ينشئ الرأس تخزين الخادم أو العشوائية أو التدوير أو الخروج. دع واجهات الإطار المصانة تنتج الرؤوس المضبوطة، وتجنب نطاقاً واسعاً مشتركاً دون حاجة مبررة.

http رأس Set-Cookie اصطناعي غير تشغيلي
Set-Cookie: __Host-lab_session=public-demo-marker; Path=/; Secure; HttpOnly; SameSite=Lax

لا تستخدم العلامة قيمة جلسة فعلية مطلقاً. يشرح المثال السمات فقط ولا يرسل لمتصفح أو خادم. يتطلب إنفاذ __Host- المدعوم Secure وPath=/ وغياب Domain وفق عقد المتصفح الموثق.

افحص شكل الرأس المعلن محلياً

يحلل مساعد المكتبة القياسية النص الاصطناعي ويفحص ثلاث سمات معلنة. لا يحاكي إنفاذ بادئة المتصفح أو حساب الموقع أو التخزين أو تسليم HTTP. قبول المحلل النص لا يثبت جلسة منشورة آمنة. احفظ أدلة مستقلة لانتهاء الخادم والعمر الخامل والمطلق والتدوير بعد الهوية أو الامتياز والإبطال. لا يبطل حذف المتصفح بالضرورة جلسات خادم أخرى. تحقق من الدورة بهويات وهمية مضبوطة، لا اعتماد حقيقي أو حساب مهيأ لتشخيص صفي.

python فحص كامل لمحلل ملف ارتباط دون اتصال
from http.cookies import SimpleCookie

jar = SimpleCookie()
jar.load("__Host-lab_session=public-demo-marker; Path=/; Secure; HttpOnly; SameSite=Lax")
cookie = jar["__Host-lab_session"]
assert cookie["path"] == "/"
assert cookie["secure"] is True
assert cookie["httponly"] is True

يعمل بمكتبة Python القياسية وعلامة عامة مخترعة. تتحقق التأكيدات من السمات المحللة فقط، دون متصفح أو قاعدة جلسات أو HTTP أو دخول أو اعتماد حقيقي.

تحقق من الدورة والتعامل مع الرد الحساس

راجع الإنشاء والتجديد وتغير الامتياز والخروج واستبدال العامل والاستجابة للاختراق كدورة متصلة. لا تحتفظ جلسة منتهية أو مبطلة بقدرتها المحمية لأن العميل يرسل قيمة قديمة. تحتاج الردود الحساسة مخبأ مناسباً وتمنع كشف الرمز في URL والإحالة والسجل. استخدم إطاراً موثوقاً للتحقق والتشفير لا سلسلة تبدو موقعة. اختبر الاستمرار المشروع والإبطال المقصود معاً. يفتح الأساس الموثق مراجعة ولا يثبت وحده أمان جلسات تطبيق معين.

الأخطاء الشائعة وإصلاحها

تعتبر HttpOnly دفاعاً عن CSRF

لماذا يحدث؟
اختلطت قابلية قراءة النص بإرسال المتصفح للاعتماد.
كيف تصلحه؟
راجع أصالة الطلب وفق نموذج الجلسة الفعلي.
كيف تتجنب تكراره؟
وثق الغرض المنفصل لكل سمة.

يسمى حذف الملف إبطالاً كاملاً

لماذا يحدث؟
اختلط تخزين العميل بقبول الخادم.
كيف تصلحه؟
تحقق من إبطال الخادم المعتمد.
كيف تتجنب تكراره؟
اختبر رفض القديم بعد تغير الدورة.

تصير علامة المثال معرّف جلسة فعلياً

لماذا يحدث؟
اعتبرت الصياغة توليداً آمناً للمعرّف.
كيف تصلحه؟
استخدم توليداً وتخزيناً مصانين غير قابلين للتوقع.
كيف تتجنب تكراره؟
اعزل المثال عن إعداد الإنتاج.

اختبر فهمك

1. هل يستطيع نص بدء فعل مع HttpOnly؟

اعرض الحل المشروح

تقيد HttpOnly قراءة ملف الارتباط بواجهات النص، ولا تلغي كل فعل يمكن تنفيذه في سياق المتصفح المصادق. لذلك تبقى صلاحيات المورد ومنع XSS ودفاعات CSRF متطلبات مستقلة. يجب تفسير السمة ضمن نموذج إرسال الاعتماد لا كحماية عامة من الطلبات.

2. لماذا لا يثبت المحلل إنفاذ __Host-؟

اعرض الحل المشروح

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

أهم ما تعلمته

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

المراجع الرسمية