تثبيت الجلسة
في مجال أمن شبكات الحاسوب ، تستهدف هجمات تثبيت الجلسة استغلال ثغرة أمنية في النظام تسمح لشخص ما بتثبيت (العثور على أو تعيين) مُعرّف جلسة شخص آخر . معظم هجمات تثبيت الجلسة تتم عبر الإنترنت، وتعتمد في الغالب على قبول مُعرّفات الجلسات من عناوين URL ( سلسلة الاستعلام ) أو بيانات POST.
سيناريوهات الهجوم
أليس لديها حساب في البنكhttp://unsafe.example.com/
تعتزم مالوري استهداف أموال أليس من حسابها المصرفي.
تتمتع أليس بمستوى معقول من الثقة في مالوري، وستزور الروابط التي ترسلها لها مالوري.
سيناريو هجوم بسيط
سيناريو مباشر:
- توصل مالوري إلى أن هذه الأداة
http://unsafe.example.com/تقبل أي مُعرّف جلسة، وتقبل مُعرّفات الجلسات من سلاسل الاستعلام، ولا يوجد بها أي تحقق أمني.http://unsafe.example.com/وبالتالي فهي غير آمنة. - أرسلت مالوري رسالة بريد إلكتروني إلى أليس تقول فيها: "مرحباً، انظري إلى هذا، هناك ميزة جديدة رائعة لملخص الحساب في بنكنا
http://unsafe.example.com/?SID=I_WILL_KNOW_THE_SID". تحاول مالوري تثبيت معرف النظام (SID) علىI_WILL_KNOW_THE_SID... - أبدت أليس اهتمامها وقامت بزيارة الموقع
http://unsafe.example.com/?SID=I_WILL_KNOW_THE_SID. ظهرت شاشة تسجيل الدخول المعتادة، وقامت أليس بتسجيل الدخول. - تزور مالوري
http://unsafe.example.com/?SID=I_WILL_KNOW_THE_SIDحساب أليس، ولديها الآن وصول غير محدود إليه.
هجوم باستخدام معرف النظام (SID) الذي يولده الخادم
من المفاهيم الخاطئة الاعتقاد بأنه إذا كان الخادم لا يقبل إلا معرّفات الجلسات التي يُنشئها بنفسه، فإنه يكون في مأمن من التثبيت. هذا غير صحيح .
سيناريو:
- يقوم برنامج مالوري بزيارة الخادم
http://vulnerable.example.com/والتحقق من مُعرّف الأمان (SID) الذي يتم إرجاعه. على سبيل المثال، قد يستجيب الخادم بما يليSet-Cookie: SID=0D6441FEA4496C2: - أصبح بإمكان مالوري الآن إرسال بريد إلكتروني إلى أليس: "ألقِ نظرة على هذه الميزة الرائعة الجديدة في بنكنا،
http://vulnerable.example.com/?SID=0D6441FEA4496C2". - تقوم أليس بتسجيل الدخول، باستخدام معرف الجلسة الثابت
SID=0D6441FEA4496C2. - تزور مالوري
http://vulnerable.example.com/?SID=0D6441FEA4496C2حساب أليس، ولديها الآن وصول غير محدود إليه.
هجمات باستخدام ملفات تعريف الارتباط عبر النطاقات الفرعية
يشبه هذا النوع من الهجمات هجوم ملفات تعريف الارتباط عبر المواقع، إلا أنه لا يعتمد على ثغرة أمنية في متصفح المستخدم. بل يعتمد على إمكانية تعيين ملفات تعريف ارتباط عامة من قِبل نطاق فرعي ، وأن هذه الملفات قد تؤثر على نطاقات فرعية أخرى.
سيناريو:
- يقوم موقع ويب
www.example.comبتوزيع نطاقات فرعية على جهات خارجية غير موثوقة - أحد هؤلاء الأطراف، مالوري، الذي يسيطر الآن
evil.example.com، يستدرج أليس إلى موقعه - تؤدي زيارة الموقع إلى
evil.example.comتعيين ملف تعريف ارتباط للجلسة مع النطاق.example.comعلى متصفح أليس - عندما تزور أليس الموقع،
www.example.comسيتم إرسال ملف تعريف الارتباط هذا مع الطلب، وستحصل أليس على الجلسة المحددة بواسطة ملف تعريف الارتباط الخاص بمالوري. - إذا قامت أليس بتسجيل الدخول الآن، فبإمكان مالوري استخدام حسابها.
عندما يكتمل هذا الهجوم، يمكن لمالوري الوصول إلى www.example.comأليس.
ليس من الضروري تسجيل دخول المستخدم لاستغلال هجمات تثبيت الجلسة [ 1 ] ، ورغم أن هذه الهجمات غير المصادق عليها لا تقتصر على هجمات ملفات تعريف الارتباط عبر النطاقات الفرعية، إلا أن آثار هجمات النطاقات الفرعية ذات صلة بهذه السيناريوهات غير المصادق عليها. على سبيل المثال، قد يُقدّم مالوري رابطًا من موقعه الخبيث، مُثبّتًا جلسة في حالة غير مصادق عليها، ويستخدم هذه التقنيات لاستغلال هدفه. يشمل ذلك سيناريوهات تستغل كلًا من الحالات غير المصادق عليها (مثل النماذج أو التسجيل) والقدرة على تزويد المستخدم بجلسة قائمة لتجاوز تسجيل الدخول تمامًا.
لنفترض، على سبيل المثال، أن مالوري قد تُنشئ مستخدمًا باسم A1ice على الموقع www.example.com وتُسجّل دخولها للحصول على مُعرّف جلسة صالح. ثم تُوقع مالوري أليس في فخّ رابط من evil.example.com يُثبّت ملف تعريف ارتباط الجلسة في متصفح أليس (كما ذُكر سابقًا) ويُعيد توجيهها إلى www.example.com لإتمام معاملة مُحدّدة (أو في الواقع، لاستخدام أوسع). وهكذا، تستطيع مالوري الاستيلاء على جلسة تسجيل الدخول الأصلية، وجمع البيانات، وتنفيذ العمليات باسم "A1ice" على "www.example.com". إذا نجحت عملية الخداع في خداع أليس وحفظت بطاقتها الائتمانية في الحساب، فقد تُجري مالوري عمليات شراء باستخدام تلك البطاقة.
التدابير المضادة
لا تقبل مُعرّفات الجلسة من متغيرات GET / POST
لا يُنصح باستخدام معرفات الجلسة في عنوان URL (سلسلة الاستعلام، متغيرات GET) أو متغيرات POST لأنها تبسط هذا الهجوم - فمن السهل إنشاء روابط أو نماذج تقوم بتعيين متغيرات GET / POST.
- يتم تسريب معرف الأمان (SID) إلى أشخاص آخرين عندما يقوم المستخدمون بنسخ ولصق "روابط مثيرة للاهتمام" من شريط العناوين في المحادثات والمنتديات والمجتمعات وما إلى ذلك.
- يتم تخزين معرف الأمان (SID) في العديد من الأماكن (سجل تاريخ المتصفح، سجل خادم الويب ، سجلات الوكيل، ...).
ملاحظة: يتم تبادل ملفات تعريف الارتباط بين علامات التبويب ونوافذ المتصفح المنبثقة. إذا كان نظامك يتطلب الوصول إلى نفس النطاق (www.example.com/?code=site1 و www.example.com/?code=site2)، فقد تتعارض ملفات تعريف الارتباط بين علامات التبويب.
قد يتطلب الأمر إرسال مُعرّف الجلسة مع عنوان URL لتجاوز هذا القيد. يُفضّل استخدام site1.example.com أو site2.example.com لتجنّب تعارض النطاقات في ملفات تعريف الارتباط. قد يُكلّف ذلك تكاليف إضافية لشهادات SSL.
يمكن ملاحظة هذا السلوك في العديد من المواقع الإلكترونية عند فتح علامة تبويب أخرى ومحاولة عرض نتائج البحث جنبًا إلى جنب. ستصبح إحدى الجلسات غير قابلة للاستخدام.
تم إيقاف استخدام معرفات الجلسة في GET و POST في PHP 8.4 وسيتم إزالتها في PHP 9.0. [ 2 ]
الحل الأمثل: تأكيد الهوية
يمكن تجنب هذا الهجوم إلى حد كبير عن طريق تغيير مُعرّف الجلسة وإعادة إنشائه عند تسجيل دخول المستخدمين. إذا كان كل طلب خاص بمستخدم ما يتطلب منه المصادقة ("تسجيل الدخول") إلى الموقع، فسيحتاج المهاجم إلى معرفة مُعرّف جلسة تسجيل دخول الضحية. ولكن عندما يزور الضحية الرابط باستخدام مُعرّف الجلسة الثابت، سيحتاج إلى تسجيل الدخول إلى حسابه للقيام بأي إجراء "هام" بشخصيته. عند هذه النقطة، سيتغير مُعرّف جلسته، ولن يتمكن المهاجم من القيام بأي إجراء "هام" باستخدام مُعرّف الجلسة المجهول.
يمكن استخدام أسلوب مماثل لحل مشكلة التصيد الاحتيالي . فإذا قام المستخدم بحماية حسابه بكلمتي مرور، فسيتم حل المشكلة إلى حد كبير.
تُعد هذه التقنية مفيدة أيضًا ضد هجمات تزوير الطلبات عبر المواقع .
الحل: تخزين مُعرّفات الجلسة في ملفات تعريف الارتباط HTTP
يُخزَّن مُعرِّف الجلسة في معظم الأنظمة الحديثة افتراضيًا في ملف تعريف ارتباط HTTP ، والذي يتمتع بمستوى أمان متوسط طالما أن نظام الجلسة يتجاهل قيم GET/POST. مع ذلك، فإن هذا الحل عُرضة لهجمات تزوير الطلبات عبر المواقع ، ولا يُلبي متطلبات عدم الاحتفاظ بالحالة في REST .
الحل: استخدام مُعرّف جلسة SSL / TLS
عند تفعيل بروتوكول HTTPS ، تسمح بعض الأنظمة للتطبيقات بالحصول على مُعرّف جلسة SSL/TLS . يُعدّ استخدام مُعرّف جلسة SSL/TLS آمنًا للغاية، ولكن العديد من لغات تطوير الويب لا توفر وظائف مدمجة قوية لهذا الغرض.
أعد إنشاء معرف النظام (SID) في كل طلب
تتمثل إحدى طرق مكافحة تثبيت الجلسة في إنشاء مُعرّف جلسة جديد (SID) مع كل طلب. عند تطبيق ذلك، حتى لو تمكن المهاجم من خداع المستخدم لقبول مُعرّف جلسة معروف، فسيكون هذا المُعرّف غير صالح عند محاولة المهاجم إعادة استخدامه. يُعدّ تطبيق هذا النظام بسيطًا، كما يتضح مما يلي:
- استرجاع مُعرّف الجلسة السابقة
OLD_SIDمن طلب HTTP. - إذا
OLD_SIDكانت القيمة فارغة أو معدومة أو لم تكن هناك جلسة بمعرف SID=OLD_SIDموجودة، فقم بإنشاء جلسة جديدة. - قم بإنشاء مُعرّف جلسة جديد
NEW_SIDباستخدام مُولّد أرقام عشوائية آمن. - لنفترض أن الجلسة تُعرَّف بواسطة SID=
NEW_SID(وليس بواسطة SID= بعد الآنOLD_SID) - إرسال معرف النظام الجديد إلى العميل.
مثال:
إذا نجحت مالوري في خداع أليس لزيارتها http://victim.example.com/?SID=I_KNOW_THE_SID، فسيتم إرسال طلب HTTP هذا إلى victim.example.com:
طلب GET /?SID=I_KNOW_THE_SID HTTP / 1.1 Host : victim.example.comvictim.example.comيقبل هذا الأمر SID=I_KNOW_THE_SID، وهو أمرٌ يُعتبر سيئاً في العادة. مع ذلك، victim.example.comفهو آمن لأنه يُجري عملية إعادة إنشاء الجلسة. victim.example.comويتلقى الاستجابة التالية:
HTTP / 1.1 200 OK Set-Cookie : SID=3134998145AB331Fستستخدم أليس الآن SID=3134998145AB331Fبيانات غير معروفة لمالوري، وهي SID=I_KNOW_THE_SIDبيانات غير صالحة. وبالتالي، تفشل مالوري في محاولة تثبيت الجلسة.
لسوء الحظ، لا يمكن دائمًا إعادة إنشاء الجلسة. من المعروف أن المشاكل تحدث عند استخدام برامج خارجية مثل ActiveX أو تطبيقات Java الصغيرة، وعندما تتواصل إضافات المتصفح مع الخادم. قد تتسبب البرامج الخارجية في تسجيل الخروج، أو قد تنقسم الجلسة إلى جلستين منفصلتين.
إذا كان تنفيذ الجلسات يتضمن إرسال معرف الجلسة (SID) من خلال متغيرات GET أو POST، فقد يؤدي ذلك أيضًا إلى جعل زر "الرجوع" غير قابل للاستخدام في معظم المتصفحات، حيث سيستخدم المستخدم حينها معرف جلسة قديمًا وغير صالح من طلب سابق.
اقبل فقط معرفات الأمان (SIDs) التي تم إنشاؤها بواسطة الخادم
إحدى طرق تحسين الأمان هي عدم قبول مُعرّفات الجلسات التي لم يُنشئها الخادم. مع ذلك، وكما ذُكر أعلاه، فإن هذا لا يمنع جميع هجمات تثبيت الجلسة.
إذا لم يتم تعيين مُعرّف الجلسة المُولّد بواسطة الخادم ( SERVER_GENERATED_SID )، فسيتم حذف جميع البيانات الموجودة في الجلسة . بعد ذلك ، يتم إنشاء مُعرّف جلسة جديد ( SERVER_GENERATED_SID ) وتعيينه إلى القيمة true .وظيفة تسجيل الخروج
تُعدّ وظيفة تسجيل الخروج مفيدة لأنها تُمكّن المستخدمين من الإشارة إلى عدم السماح بمزيد من الطلبات خلال الجلسة. وبالتالي، لا يُمكن للهجمات أن تكون فعّالة إلا أثناء نشاط الجلسة. تجدر الإشارة إلى أن الكود التالي لا يُجري أي فحوصات لتزوير الطلبات عبر المواقع ، مما قد يسمح للمهاجم بإجبار المستخدمين على تسجيل الخروج من تطبيق الويب .
إذا ( تم تسجيل الخروج ) { session_destroy (); // حذف جميع البيانات في الجلسة }مهلة انتهاء صلاحية معرفات النظام القديمة
هذا الدفاع سهل التنفيذ وله ميزة توفير قدر من الحماية ضد المستخدمين غير المصرح لهم الذين يصلون إلى حساب مستخدم مصرح له باستخدام جهاز ربما يكون قد تُرك دون رقابة.
يُخزَّن في متغير الجلسة طابع زمني لآخر وصول تم بواسطة مُعرِّف الأمان (SID). عند استخدام مُعرِّف الأمان هذا مرة أخرى، يُقارن الطابع الزمني الحالي مع الطابع الزمني المُخزَّن في الجلسة. إذا كان الفرق أكبر من قيمة مُحدَّدة مُسبقًا، ولتكن 5 دقائق، تُنهى الجلسة. وإلا، يُحدَّث متغير الجلسة بالطابع الزمني الحالي.
قم بإنهاء الجلسة إذا كان المُحيل مشبوهاً.
عند زيارة صفحة ما، تقوم معظم متصفحات الويب بتعيين رأس Referrer - الصفحة التي تحتوي على الرابط الذي اتبعته للوصول إلى هذه الصفحة.
عندما يكون المستخدم مسجلاً دخوله إلى موقع من غير المرجح أن يتم الوصول إليه من خارجه (مثل مواقع البنوك أو البريد الإلكتروني )، ولا يكون هذا الموقع من النوع الذي يبقى فيه المستخدمون مسجلين دخولهم لفترة طويلة، يجب أن يكون المُحيل من ذلك الموقع. أي مُحيل آخر يُعتبر مشبوهاً. مع ذلك، إذا كان الطلب الأصلي من صفحة HTTPS، فسيتم حذف المُحيل، لذا لا يمكنك الاعتماد على هذا النظام الأمني.
على سبيل المثال، http://vulnerable.example.com/يمكن استخدام فحص الأمان التالي:
إذا كان ( strpos ( $_SERVER [ 'HTTP_REFERER' ], 'http://vulnerable.example.com/' ) !== 0 ) { session_destroy (); // حذف جميع البيانات في الجلسة } session_regenerate_id (); // إنشاء مُعرّف جلسة جديدتأكد من أن المعلومات الإضافية متسقة طوال الجلسة
إحدى طرق تعزيز الأمان هي ضمان ظهور المستخدم على أنه نفس المستخدم النهائي (العميل). هذا يجعل من الصعب تنفيذ هجمات تثبيت الجلسة وغيرها من الهجمات.
مع ازدياد التزام الشبكات بمعيار RFC 3704 وغيره من ممارسات مكافحة التزييف ، يصبح عنوان IP أكثر موثوقية كمعرّف "مصدر ثابت". لذا، يمكن تحسين أمان موقع الويب من خلال التحقق من ثبات عنوان IP المصدر طوال الجلسة.
يمكن القيام بذلك بهذه الطريقة:
إذا كان عنوان الخادم البعيد ( $_SERVER [ 'REMOTE_ADDR' ] ) لا يساوي عنوان الجلسة البعيد السابق ($ _SESSION [ 'PREV_REMOTEADDR' ]) ، فسيتم حذف جميع البيانات من الجلسة . وإلا، فسيتم إنشاء مُعرّف جلسة جديد ( session_regenerate_id ()). ثم يتم تعيين عنوان الجلسة البعيد السابق ($_SESSION [ 'PREV_REMOTEADDR' ]) إلى عنوان الخادم البعيد السابق ( $_SERVER [ 'REMOTE_ADDR' ]).ومع ذلك، هناك بعض النقاط التي يجب مراعاتها قبل استخدام هذا النهج.
- قد يتشارك عدة مستخدمين عنوان IP واحد. ومن الشائع أن يتشارك مبنى بأكمله عنوان IP واحد باستخدام تقنية NAT .
- قد يمتلك المستخدم عنوان IP غير ثابت. ينطبق هذا على المستخدمين الذين يستخدمون خوادم بروكسي (مثل عملاء AOL ). وينطبق أيضًا على بعض مستخدمي الهواتف المحمولة/التجوال، بالإضافة إلى المستخدمين الذين يستخدمون اتصالات إنترنت متوازنة الأحمال. كما يمكن للمستخدمين الذين فعّلوا ملحقات خصوصية IPv6 تغيير عناوين خصوصية IPv6 الخاصة بهم في أي وقت.
- لن يعمل بشكل موثوق مع عملاء البروتوكول المزدوج حيث ستنتقل الطلبات بين IPv4 و IPv6.
- لن يعمل بشكل موثوق مع مستخدمي الهواتف المحمولة، حيث يتنقل مستخدمو الهواتف المحمولة بين العناوين أيضًا.
بالنسبة لبعض المواقع، تفوق مزايا الأمان الإضافية قلة الراحة، وبالنسبة لمواقع أخرى لا يكون الأمر كذلك.
وكيل المستخدم
تُعرّف المتصفحات نفسها من خلال ترويسة HTTP المسماة "User-Agent". لا تتغير هذه الترويسة عادةً أثناء الاستخدام؛ وسيكون تغييرها مثيرًا للريبة للغاية. قد يستخدم تطبيق ويب خاصية الكشف عن "User-Agent" في محاولة لمنع المستخدمين الضارين من سرقة الجلسات. إلا أن تجاوز هذه الخاصية سهل للغاية، إذ يمكن للمهاجم بسهولة الحصول على "User-Agent" الخاص بالضحية من خلال موقعه الإلكتروني، ثم انتحاله أثناء الهجوم. يعتمد نظام الأمان المقترح هذا على مبدأ "الأمان عن طريق التعتيم" .
إذا كان ( $_SERVER [ 'HTTP_USER_AGENT' ] != $_SESSION [ 'PREV_USERAGENT' ]) { session_destroy (); // حذف جميع البيانات في الجلسة } session_regenerate_id (); // إنشاء مُعرّف جلسة جديد $_SESSION [ 'PREV_USERAGENT' ] = $_SERVER [ 'HTTP_USER_AGENT' ];ومع ذلك، هناك بعض النقاط التي يجب مراعاتها قبل استخدام هذا النهج.
- قد يكون لدى العديد من المستخدمين نفس وكيل المستخدم للمتصفح في مقهى الإنترنت .
- قد يكون لدى العديد من المستخدمين نفس المتصفح الافتراضي (على سبيل المثال: Internet Explorer 6 في Windows XP SP3 أو المتصفح المصغر في الهاتف المحمول).
لكن قد يتغير وكيل المستخدم قانونيًا في بعض الحالات. الأمثلة التالية تخص نفس المستخدمين.
- هاتف ذكي دارت شاشته منذ آخر طلب
Mozilla/5.0 (Linux; U; Android 2.2; en-us; DROID2 Build/VZW) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 854X480 motorola DROID2Mozilla/5.0 (Linux; U; Android 2.2; en-us; DROID2 Build/VZW) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 480X854 motorola DROID2
- وضع التوافق مع متصفح إنترنت إكسبلورر:
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
- مستخدم يصل إلى موقع ويب عبر خادم وكيل موزع على عدة خوادم، وليس جميعها مُحدَّثًا إلى أحدث إصدار من برنامج الوكيل.
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (FlipboardProxy/0.0.5; +http://flipboard.com/browserproxy)Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (FlipboardProxy/1.1; +http://flipboard.com/browserproxy)
الدفاع المتعمق
يعتمد مفهوم الدفاع المتعدد الطبقات على الجمع بين عدة تدابير مضادة. الفكرة بسيطة: إذا كان التغلب على عقبة واحدة أمراً سهلاً، فقد يكون التغلب على عدة عقبات أمراً بالغ الصعوبة.
قد تتضمن استراتيجية الدفاع المتعمق ما يلي:
- قم بتفعيل بروتوكول HTTPS (للحماية من المشاكل الأخرى)
- التكوين الصحيح (عدم قبول معرفات الأمان الخارجية، وتعيين مهلة زمنية، وما إلى ذلك).
- تنفيذ عملية إعادة إنشاء الجلسة، ودعم تسجيل الخروج، وما إلى ذلك.
لا يتم تمرير المحيلين عبر بروتوكول HTTP باستخدام SSL/TLS (HTTPS).
يوضح نص PHP التالي العديد من هذه التدابير المضادة مجتمعة بطريقة دفاعية متعددة الطبقات:
إذا كانت قيمة ` $_GET [ 'LOGOUT' ]` موجودة ، أو كان عنوان الخادم البعيد ( `$_SERVER [ ' REMOTE_ADDR ' ] `) مختلفًا عن عنوان الجلسة البعيد السابق (`$_SESSION['PREV_REMOTEADDR' ] `) ، أو كان وكيل المستخدم (`$_SERVER [ 'HTTP_USER_AGENT'] `) مختلفًا عن وكيل المستخدم السابق ( `$_SESSION [ 'PREV_USERAGENT' ]`) ، فسيتم إنهاء الجلسة (` session_destroy ()` ).session_regenerate_id (); // إنشاء مُعرّف جلسة جديد$_SESSION [ 'PREV_USERAGENT' ] = $_SERVER [ 'HTTP_USER_AGENT' ]; $_SESSION [ 'PREV_REMOTEADDR' ] = $_SERVER [ 'REMOTE_ADDR' ];لاحظ أن هذا الكود يتحقق من عنوان IP الخاص بالمستخدم (REMOTE_ADDR) ووكيل المستخدم (User-agent) الحاليين مقارنةً بعنوان IP الخاص بالمستخدم ووكيل المستخدم في الطلب السابق. قد يكون هذا غير مناسب لبعض المواقع كما ذُكر سابقًا.
انظر أيضاً
مراجع
- ↑ مقال حول هجمات تثبيت الجلسة غير المصادق عليها
- ↑ "PHP: rfc:deprecate-get-post-sessions" . wiki.php.net . تم الاطلاع عليه بتاريخ 28 يونيو 2025 .
روابط خارجية
- ركن الأمن: تثبيت الجلسة
- ثغرة تثبيت الجلسة في تطبيقات الويب (ملف PDF)
- مثال على فيديو تثبيت الجلسة
- تصنيف التهديدات الصادر عن اتحاد أمن تطبيقات الويب
- ثغرات أمنية في الويب
