تخطَّ إلى المحتوى

Session Hijacking

خطف الجلسة Session Hijacking

Session Hijacking هي انتحال هوية مستخدم مسجَّل دخول عبر الحصول على معرّف جلسته الصالح — بسرقته (XSS، شبكة غير مشفَّرة) أو زرعه مسبقًا (تثبيت الجلسة).

بعد تسجيل الدخول، يحمل المتصفّح معرّف جلسة (عادة بكوكي) يثبت الهوية بكل طلب لاحق دون تكرار كلمة المرور. أي طرف يحصل على نفس المعرّف يستطيع انتحال المستخدم تمامًا دون معرفة كلمة المرور إطلاقًا — عبر سرقته (من كود XSS يقرأ الكوكي، أو اتصال غير مشفَّر يُعترَض)، أو بأسلوب أدقّ يسمّى "تثبيت الجلسة" (Session Fixation) حيث يفرض المهاجم معرّف جلسة معروفًا له على الضحية **قبل** تسجيل دخولها.

الصياغة

Set-Cookie: sessionId=...; Secure; HttpOnly; SameSite=Strict

📄 مثال

// ✅ آمن: كوكي جلسة بخصائص الحماية الثلاث معًا
res.cookie("sessionId", token, {
  httpOnly: true,   // غير مقروء من JavaScript — يحدّ من سرقته عبر XSS
  secure: true,     // يُرسَل فقط عبر HTTPS
  sameSite: "strict",
});

// وعند نجاح تسجيل الدخول: أصدر معرّف جلسة جديدًا دائمًا
// بدل إعادة استخدام أي معرّف كان موجودًا قبل المصادقة

أهم النقاط

النقطةالوظيفة
HttpOnlyيمنع قراءة الكوكي من JavaScript — يحدّ من سرقتها عبر XSS
إعادة إصدار المعرّفأصدر معرّف جلسة جديدًا فور تسجيل الدخول لمنع تثبيت الجلسة
انتهاء صلاحية معقولجلسة صالحة للأبد تمنح المهاجم نافذة استغلال أطول لو سُرقت

💡 نصائح عملية

  • ادمج الخصائص الثلاث (HttpOnly + Secure + SameSite) معًا — كل واحدة تسدّ ثغرة مختلفة، وليست بديلة عن بعضها

⚠️ أخطاء شائعة

  • قبول معرّف جلسة أرسله المستخدم بنفسه (بدل توليده على الخادم فقط) — يفتح الباب لتثبيت الجلسة

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار CYBERSECURITY الكامل بالعربي.