در حال بارگذاری...
بررسی قابلیت خروج (Logout) و اطمینان از معتبر زدایی صحیح نشست بعد از خروج کاربر.
اهداف این درس
تست قابلیت خروج (Logout Functionality Testing) شامل بررسی نحوه خروج کاربر و اطمینان از معتبر زدایی صحیح نشست است. خروج ناقص میتواند منجر به دسترسی غیرمجاز به حساب کاربر شود.
خروج مهم است زیرا اگر نشست بعد از خروج معتبر زدایی نشود، مهاجم میتواند با همان نشست به حساب کاربر دسترسی پیدا کند. همچنین در رایانههای اشتراکی، کاربر بعدی ممکن است به حساب کاربر قبلی دسترسی داشته باشد.
1# ورود و دریافت Session ID2curl -v -c cookies.txt -d 'user=admin&pass=admin' https://target.com/login34# ذخیره Session ID5SESSION_ID=$(grep session cookies.txt | awk '{print $NF}')67# خروج8curl -v -b cookies.txt https://target.com/logout910# تست استفاده از Session ID قبلی11curl -v -b "session=$SESSION_ID" https://target.com/dashboardبررسی کنید آیا نشست بعد از خروج معتبر زدایی شده:
بررسی کنید آیا Cookieها بعد از خروج حذف شدهاند:
1# بررسی Set-Cookie در پاسخ خروج2curl -v -b cookies.txt https://target.com/logout 2>&1 | grep -i 'set-cookie'34# باید شامل expires در گذشته باشد5# مثال: Set-Cookie: session=; expires=Thu, 01 Jan 1970 00:00:00 GMT| مشکل | خطر | راهحل |
|---|---|---|
| نشست معتبر زدایی نشود | تصاحب حساب | معتبر زدایی در سمت سرور |
| Cookie حذف نشود | دسترسی مجدد | حذف Cookie با expires گذشته |
| خروج فقط در یک تب | دسترسی از تب دیگر | معتبر زدایی نشست اصلی |
| خروج فقط در یک دستگاه | دسترسی از دستگاه دیگر | معتبر زدایی تمام نشستها |
خروج ناقص میتواند منجر به تصاحب حساب کاربری، دسترسی غیرمجاز به اطلاعات حساس و نقض حریم خصوصی شود.
1from django.contrib.auth import logout23def logout_view(request):4 # معتبر زدایی نشست5 request.session.flush()6 # خروج کاربر7 logout(request)8 # حذف Cookie9 response = redirect('login')10 response.delete_cookie('sessionid')11 return response1app.post('/logout', (req, res) => {2 // معتبر زدایی نشست3 req.session.destroy((err) => {4 // حذف Cookie5 res.clearCookie('sessionId');6 res.clearCookie('session.sig');7 // redirect به صفحه ورود8 res.redirect('/login');9 });10});توصیه عملی
همیشه نشست را در سمت سرور معتبر زدایی کنید. حذف Cookie بهتنهایی کافی نیست.
نشست باید در سمت سرور معتبر زدایی شود.
Cookieها باید بعد از خروج حذف شوند.
خروج باید در تمام دستگاهها مؤثر باشد.
صفحه خروج باید تأیید خروج نمایش دهد.
خروج امن باید چه کاری انجام دهد؟
چرا خروج مهم است؟
خروج مهم است زیرا اگر نشست بعد از خروج معتبر زدایی نشود، مهاجم میتواند با همان نشست به حساب کاربر دسترسی پیدا کند. همچنین در رایانههای اشتراکی، کاربر بعدی ممکن است به حساب کاربر قبلی دسترسی داشته باشد.
خروج امن چه ویژگیهایی دارد؟
خروج امن باید: نشست را در سمت سرور معتبر زدایی کند، Cookieها را حذف کند، در تمام دستگاهها مؤثر باشد، و صفحه تأیید خروج نمایش دهد.