در دنیای امنیت وب، هویت کاربر و نشست (Session) مهمترین بخشهای هر سیستم احراز هویت هستند. اگر این دو بخش درست پیادهسازی نشده باشند، مهاجم میتواند به جای کاربر وارد سایت شود، جلسه او را بدزدد و حتی به اطلاعات حساس دسترسی پیدا کند.
این دقیقا همان چیزی است که در دو حمله مهم رخ میدهد:
-
Broken Authentication
-
Session Hijacking
در ادامه هر دو را کامل توضیح میدهیم.
🔥 Broken Authentication چیست؟
Broken Authentication به مجموعهای از ضعفهای امنیتی گفته میشود که باعث میشود سیستم لاگین، ثبتنام، مدیریت رمز عبور و احراز هویت قابل سوءاستفاده گردد.
این حملات زمانی رخ میدهند که:
-
سیاست رمز عبور ضعیف باشد
-
امکان حدس زدن یا Brute-force وجود داشته باشد
-
توکنهای احراز هویت قابل پیشبینی باشند
-
احراز هویت چندمرحلهای فعال نباشد
-
توکنها پس از خروج، باطل نشوند
-
کوکیهای احراز هویت رمز نشده باشند
-
Session ID پس از ورود کاربر تغییر نکند
🔍 چه کارهایی یک سایت را آسیبپذیر میکند؟
-
عدم محدودیت برای تعداد ورود ناموفق
-
ارسال رمز عبور در قالب ایمیل
-
استفاده از Session ID در URL
-
ذخیره رمز عبور بدون Hash
-
حذف نکردن سشنهای قدیمی
-
احراز هویت با پرسشهای امنیتی ساده مثل “اسم مدرسهات؟”
🎯 نتیجه حمله Broken Authentication؟
مهاجم میتواند:
-
با حدس رمز وارد حساب شود
-
توکن یا Session ID را جعل کند
-
رمز عبور را ریست کند و کنترل حساب را بگیرد
-
وارد پنل مدیریت سایت شود
🔥 Session Hijacking چیست؟
Session Hijacking یعنی ربودن جلسه کاربر در هنگام لاگین.
وقتی کاربر وارد سایت میشود، یک Session ID دریافت میکند که او را برای سایت شناسایی میکند.
اگر مهاجم این Session ID را به دست آورد، میتواند دقیقا با همان سطح دسترسی وارد حساب کاربر شود.
🕵️ چگونه Session Hijacking انجام میشود؟
روشهای رایج:
1️⃣ ربودن Session از طریق XSS
اگر سایت دچار XSS باشد، مهاجم میتواند:
را استخراج کند و Session را بدزدد.
2️⃣ استفاده از شنود (Sniffing)
اگر ارتباط HTTP باشد و HTTPS استفاده نشود، مهاجم میتواند Session ID را از شبکه با ابزارهایی مثل Wireshark شکار کند.
3️⃣ Session Fixation
مهاجم یک Session ID از قبل ایجاد میکند و قربانی را مجبور میکند با همان Session وارد حساب شود.
4️⃣ ربای Session از طریق آسیبپذیری در کوکیها
مثل:
-
httponly تنظیم نشده
-
secure تنظیم نشده
-
SameSite تنظیم نشده
🔐 چطور جلوی Broken Authentication را بگیریم؟
راهکارهای حرفهای امنیتی:
-
فعال کردن احراز هویت چندمرحلهای (2FA)
-
تغییر Session ID بعد از لاگین
-
استفاده از bcrypt یا argon2 برای رمز عبور
-
محدود کردن تعداد تلاش ورود
-
استفاده از HTTPS در تمام صفحات
-
ذخیره نکردن Session ID در URL
-
غیرفعال کردن Auto-Fill در فرمها
-
استفاده از CAPTCHAs برای حملات Brute-force
-
مانیتورینگ ورودهای مشکوک
🔐 چطور جلوی Session Hijacking را بگیریم؟
راهکارهای مهم:
-
استفاده از HTTPS
-
فعالکردن این ویژگیها روی کوکی سشن:
-
HttpOnly -
Secure -
SameSite=Strict
-
-
رندر مجدد Session بعد از لاگین
-
محدود کردن زمان انقضا Session
-
جلوگیری از XSS با Sanitization صحیح
-
جلوگیری از Session Fixation
Broken Authentication
نقصهایی در روند احراز هویت که اجازه ورود غیرمجاز میدهد.
Session Hijacking
سرقت Session کاربر برای ورود مستقیم به حساب او.
این حملات از خطرناکترین آسیبپذیریهای OWASP هستند و در سایتهای ضعیف، مهاجم میتواند کنترل کامل حساب کاربر را به دست بگیرد.



