Session Fixation با تحمیل یک شناسهی نشست از قبل مشخص
وقتی سرور بعد از ورود موفق، شناسهی نشست را بازسازی (regenerate) نمیکند.
اگر یک برنامه اجازه دهد شناسهی نشست از طریق URL یا پارامتر تنظیم شود (یا حتی فقط آن را بعد از لاگین regenerate نکند)، مهاجم میتواند یک شناسهی نشست دلخواه را از قبل برای قربانی بسازد (مثلاً با یک لینک حاوی آن شناسه)، منتظر بماند تا قربانی با همان شناسه لاگین کند، و سپس با همان شناسهی از-قبل-معلوم وارد حساب قربانی شود.
نحوهی شناسایی
- مقدار کوکی نشست را قبل و بعد از لاگین موفق مقایسه کنید.
- اگر مقدار یکسان باقی ماند، برنامه آسیبپذیر به Session Fixation است.
راهحل
همیشه بعد از هر تغییر سطح دسترسی (لاگین، ارتقای نقش)، یک شناسهی نشست کاملاً جدید (regenerate) صادر شود؛ هیچوقت شناسهی نشست از ورودی کاربر قابلتنظیم نباشد.