Session Hijacking چیست؟ 3 گام رفع آن

فرض کنید وارد حساب کاربری خود شدهاید، رمز عبور قدرتمندی دارید و حتی احراز هویت دو مرحلهای را هم فعال کردهاید؛ با این حال، چند ساعت بعد متوجه میشوید فردی بدون دانستن رمز عبور شما وارد همان حساب شده است.
چطور چنین چیزی ممکن است؟ پاسخ را باید در بخشی از فرایند ورود جستوجو کرد که معمولاً کمتر به آن توجه میشود: Session Cookie.
سایت پس از ورود موفق، اطلاعاتی را در قالب یک نشست در مرورگر نگه میدارد تا مجبور نباشید با باز کردن هر صفحه دوباره هویت خود را ثابت کنید.
این سازوکار استفاده از وب را ساده میکند؛ اما اگر اطلاعات نشست به دست فرد دیگری برسد، همین راحتی میتواند به یک خطر امنیتی جدی تبدیل شود.
اینجاست که مفهوم Session Hijacking یا ربودن نشست مطرح میشود. مهاجم بهجای تلاش مستقیم برای پیدا کردن رمز عبور، میتواند Session Cookie معتبر را هدف قرار دهد و از نشست فعال کاربر سوءاستفاده کند.
حقیقت این است که بسیاری از حملات امروزی اصلاً رمز عبور را هدف نمیگیرند و مستقیماً روی نشستهای فعال تمرکز میکنند؛ به همین دلیل آگاهی از سازوکار هک از طریق کوکی برای همه کاربران اینترنت ضروری شده است.

در ادامه میبینیم Session Hijacking چیست، کوکی چگونه در این حمله نقش دارد، مهاجم از چه مسیرهایی میتواند به نشست دسترسی پیدا کند و برای جلوگیری از Session Hijacking چه اقداماتی باید انجام داد.
آنچه در این مقاله می خوانید :
Session Hijacking چیست و چگونه اتفاق میافتد؟
برای درک ربودن نشست یا همان Session Hijacking، ابتدا باید با ماهیت پروتکل HTTP آشنا شویم.
HTTP بهصورت ذاتی Stateless است؛ یعنی هر درخواست مستقل از درخواست قبلی ارسال میشود و سرور بهخودیخود اطلاعات ورود قبلی کاربر را به خاطر نمیسپارد.
از دید سرور، دو درخواست پشتسرهم از یک مرورگر، دو غریبه کاملاً جدا هستند. برای حل این مسئله، سایت پس از ورود موفق یک Session ID یکتا و تصادفی ایجاد میکند و مرورگر آن را در قالب Cookie نگهداری میکند.
از این پس، در هر درخواست جدید، این شناسه بهصورت خودکار همراه پیام ارسال میشود تا سرور، کاربر را شناسایی کند.

میتوان Session Cookie را مثل یک کارت کلید موقت در نظر گرفت: کاربر یک بار هویت خود را ثابت میکند و پس از آن، سایت با استفاده از اطلاعات نشست، او را در درخواستهای بعدی میشناسد.
این کارت کلید معمولاً در حافظه مرورگر یا در دیسک ذخیره میشود و تا زمان انقضا یا خروج از حساب، معتبر میماند. اگر مهاجم بتواند این «کارت کلید دیجیتال» را سرقت یا کپی کند، ممکن است بدون وارد کردن رمز عبور وارد همان حساب شود؛ چون از دید سرور، او دقیقاً همان کاربر اصلی است.
چرا Session Hijacking میتواند MFA را دور بزند؟
احراز هویت چندمرحلهای یا MFA برای جلوگیری از ورود افراد غیرمجاز اهمیت زیادی دارد. با این حال، MFA بیشتر در مرحله ورود به حساب نقش دارد؛ یعنی همان لحظهای که رمز عبور و کد یکبارمصرف بررسی میشوند.
پس از ورود موفق، سرور یک نشست معتبر ایجاد میکند و کوکی مربوط به آن میتواند نشان دهد که مراحل احراز هویت قبلاً با موفقیت انجام شدهاند. به همین دلیل، اگر مهاجم بتواند Session Cookie معتبر را سرقت کند، ممکن است دیگر نیازی به رمز عبور یا کد یکبارمصرف نداشته باشد.
به زبان ساده، MFA به «هویت» اعتماد میکند، اما سرور به «نشست» اعتماد میکند. هنگامی که مهاجم با کوکی سرقتشده درخواست میفرستد، سرور هیچ درخواست احراز هویت جدیدی از او نمیگیرد؛ او عملاً پشت همان درِ بستهشدهای است که قبلاً به نام کاربر اصلی باز شده است.
یکی از مسیرهای رایج برای چنین سرقتی، بدافزارهای سرقت اطلاعات یا Infostealerها هستند؛ بدافزارهایی که ممکن است همراه نرمافزارهای آلوده یا کرکشده روی سیستم نصب شوند و اطلاعات ذخیرهشده در مرورگر، از جمله کوکیها، را برای مهاجم ارسال کنند.
روشهای رایج حمله Session Hijacking
حمله Session Hijacking از مسیرهای مختلفی انجام میشود و همیشه یک شکل ندارد. درک این مسیرها، نخستین گام برای ساختن دفاع مؤثر است. ما در اینجا مهم ترین روشهای حمله Session Hijacking را برایتان آوردهایم. از شما میخواهیم خوب به آنها دقت کنید:
1) بدافزارها و تروجانهای سرقت اطلاعات
نرمافزارهای آلوده و Infostealerها میتوانند پایگاهداده مرورگر را بررسی کنند و کوکیهای ذخیرهشده، رمزهای ذخیرهشده و حتی توکنهای نشست را استخراج کنند.
نصب برنامههای کرکشده یکی از رایجترین سناریوهایی است که زمینه ورود این بدافزارها را فراهم میکند؛ کاربر هنگام دانلود فایلهای فعالسازی غیررسمی، عملاً دروازه سیستم خود را به مهاجم میسپارد.
2) آسیبپذیری XSS و سرقت کوکیهای فاقد امنیت
در حمله Cross-Site Scripting یا XSS، مهاجم کد مخرب JavaScript را در یک سایت آسیبپذیر تزریق میکند. اگر کوکیهای سایت با ویژگی HttpOnly محافظت نشده باشند، اسکریپت تزریقشده میتواند مقدار کوکی را بخواند و به سرور مهاجم ارسال کند.
در چنین شرایطی، مهاجم برای دسترسی به اطلاعات حساس مرورگر و کوکیها تلاش میکند و بدون هیچ ردی از رمز عبور، مالک نشست کاربر میشود.

3) شنود شبکه (Network Sniffing)
اگر کاربر در یک شبکه عمومی و ناامن مانند وایفای کافهها یا هتلها قرار داشته باشد و سایت از HTTPS استفاده نکند یا رمزنگاری ارتباط کامل نباشد، اطلاعات ارتباطی میتوانند در معرض شنود قرار بگیرند.
در چنین بستری، Session ID در قالب متن قابلخواندن در شبکه جریان مییابد و هر ناظری روی همان شبکه میتواند آن را رهگیری کند؛ از همین رو، استفاده از ارتباط رمزنگاریشده سراسری اهمیت زیادی دارد.
4) تثبیت نشست (Session Fixation)
در این روش، مهاجم تلاش میکند یک Session ID مشخص را پیش از ورود کاربر در اختیار او قرار دهد؛ مثلاً از طریق لینک دستکاریشده.
اگر سایت پس از ورود، شناسه نشست را تغییر ندهد، کاربر با همان شناسهای وارد میشود که مهاجم از قبل آن را میداند و همین موضوع زمینه سوءاستفاده را ایجاد میکند.
تحلیل رفتار مهاجمان در لایههای مختلف وب و زیرساخت
مهاجمی که به دنبال Session Hijacking یا ربودن نشست است، همیشه از یک نقطه حمله نمیکند؛ او در لایههای مختلفی از اکوسیستم وب جستوجو میکند. در زیر این موارد را آوردهایم:
- در لایه کاربر، تمرکز بر مهندسی اجتماعی، فایلهای آلوده و افزونههای مخرب مرورگر است.
- در لایه اپلیکیشن، هدف پیدا کردن آسیبپذیریهایی مانند XSS، مدیریت ضعیف نشست و پیکربندی نادرست کوکیهاست.
- در لایه شبکه و زیرساخت، تلاش مهاجم بر شنود ترافیک، حملات Men-in-the-Middle و بهرهبرداری از گواهیهای نامعتبر متمرکز میشود.
نکته قابل تأمل این است که بسیاری از مهاجمان امروزی بهجای حمله مستقیم به سرورهایی که معمولاً بهخوبی محافظت میشوند، حلقه ضعیفتر یعنی مرورگر کاربر را هدف میگیرند. این رویکرد توضیح میدهد که چرا هک از طریق کوکی در سالهای اخیر به یکی از پرتکرارترین الگوهای نفوذ به حسابهای دارای امنیت بالا تبدیل شده است.
نکتهای که کاربران معمولاً از آن غافل میشوند این است که تفاوت اصلی هک پسورد و هک نشست در همینجاست: در هک پسورد، مهاجم باید مرحله احراز هویت را پشت سر بگذارد، اما در ربودن نشست، عملاً از این مرحله عبور میکند و مستقیم وارد محدوده احرازشده حساب میشود.
چگونه از Session Hijacking جلوگیری کنیم؟
خب حالا که تا حدودی با مفهوم Session Hijacking و روش های تشخیص آن آشنایی پیدا کردید، باید به سراغ این موضوع مهم برویم که واقعا چگونه میتوان از این حمله جلوگیری کرد؟ اما باید گفت کاهش خطر Session Hijacking فقط به یک اقدام وابسته نیست. کاربران و مدیران سایت هر کدام بخشی از این زنجیره امنیتی را بر عهده دارند.
اگر یک کاربر عادی و یا یک طراح سایت حرفه ای هستید، وظایف شما برای پیشگیری از Session Hijacking متفاوت است. ما در ادامه راهکارها را برای شما تقسیم بندی کرده ایم که بهتر بتوانید از سایت خود محافظت کنید.
اگر تخصص کافی در زمینهی هک و پاکسازی ندارید، توصیه میکنیم این کار بسیار تخصصی و پر اهمیت را به ما بسپارید. تیم ما این خدمات را به صورت حرفهای انجام میدهد. برای راهنمایی و آشنایی با این خدمات روی لینک زیر کلیک کنید:
راهکارهای پیشگیری برای کاربران عادی
برای بالابردن امنیت سایت و جلوگیری از حمله Session Hijacking، اولین قدم، احتیاط در نصب نرمافزارهاست. برنامههای کرکشده یا فایلهای ناشناس میتوانند حامل بدافزارهایی باشند که اطلاعات مرورگر را سرقت میکنند. پس اگر شما یک کاربر عادی هستید برای جلوگیری از Session Hijacking، این توصیههای کلیدی را جدی بگیرید:
- از نصب نرمافزارهای متفرقه، فایلهای کرکشده و افزونههای ناشناس مرورگر خودداری کنید و فقط از منابع رسمی دانلود کنید.
- یک بسته امنیتی معتبر و بهروز روی سیستم داشته باشید و اسکن دورهای انجام دهید؛ این بستهها میتوانند رفتار Infostealerها را پیش از ارسال داده شناسایی کنند.
- پس از پایان کار با حسابهای حساس، از گزینه Logout استفاده کنید؛ خروج کامل میتواند باعث شود سرور نشست فعلی را باطل کند.
- در شبکههای عمومی برای ورود به حسابهای حساس احتیاط بیشتری داشته باشید و در صورت نیاز از ارتباط امن استفاده کنید.
- لیست نشستهای فعال حسابهای مهم را بهصورت دورهای بررسی کنید و نشستهای ناشناس را ببندید.
پاکسازی خودکار کوکیها پس از بستن مرورگر نیز میتواند در کاهش ریسک مفید باشد؛ البته این روش بهتنهایی جایگزین سایر اقدامات امنیتی نیست.

راهکارهای تخصصی برای مدیران سایتها و توسعهدهندگان وردپرس
اولین اصل، استفاده سراسری از HTTPS و TLS است. رمزنگاری ارتباط میان مرورگر و سرور کمک میکند کوکیها در مسیر انتقال در برابر شنود محافظت شوند؛ بنابراین حتی یک صفحه از سایت هم نباید از طریق HTTP سرو شود.
در وردپرس، فعالسازی اجباری HTTPS در پنل مدیریت و ریدایرکت دائمی تمام آدرسها ضروری است. تنظیم صحیح ویژگیهای امنیتی Cookie نیز اهمیت زیادی دارد:
- HttpOnly: دسترسی JavaScript به کوکی را محدود میکند و میتواند خطر سرقت کوکی در سناریوهای XSS را تا حد زیادی از بین ببرد.
- Secure: ارسال کوکی را به ارتباطات رمزنگاریشده HTTPS محدود میکند و از نشت Session ID در بستر ناامن جلوگیری میکند.
- SameSite: نحوه ارسال کوکی در درخواستهای بینسایتی را کنترل میکند و در کاهش خطر CSRF نقش دارد؛ تنظیم آن روی Lax یا Strict برای اکثر سایتها توصیه میشود.
در کنار این موارد، سایت باید پس از ورود موفق کاربر، Session ID را بازسازی (Regenerate) کند؛ این کار یکی از مؤثرترین راهکارهای مقابله با Session Fixation است.
در وردپرس این اتفاق هنگام ورود بهصورت پیشفرض رخ میدهد، اما افزونههای سفارشی و مسیرهای احراز هویت اختصاصی نیز باید آن را رعایت کنند.
علاوه بر این موارد محدود کردن طول عمر نشست نیز برای جلوگیری از Session Hijacking اهمیت دارد. تعیین زمان انقضای مطلق نشست و همچنین Idle Timeout باعث میشود نشست پس از مدت مشخص یا عدم فعالیت کاربر، اعتبار خود را از دست بدهد. افزودن اتصال نشست به اثر انگشت دستگاه (User-Agent و بخشی از IP) و پیادهسازی احراز هویت مجدد برای عملیات حساس، لایه دفاعی دیگری ایجاد میکند.
اگر علاقه مند به مباحث امنیت سایت هستید و محافظت از سایت برایتان اهمیت دارد، مقاله حذف گزینه مرا به خاطر بسپار از لاگین وردپرس نیز برایتان مفید خواهد بود.
اگر به سرقت Session مشکوک شدیم چه کنیم؟
اگر متوجه ورود غیرعادی یا فعالیت مشکوک در حساب خود شدید، سریع و مرحلهبهمرحله عمل کنید:
- ابتدا نشستهای فعال را از بخش تنظیمات امنیتی حساب بررسی و در صورت امکان، همه آنها را Terminate کنید تا توکنهای سرقتشده بیاعتبار شوند.
- سپس رمز عبور را تغییر دهید و در صورت پشتیبانی، ابطال توکنهای دسترسی و Refresh Token سرویسهای متصل را نیز انجام دهید.
- دستگاهی را که با آن وارد حساب شدهاید از نظر وجود بدافزار اسکن کنید و در صورت شک به آلودگی، رمزهای ذخیرهشده مرورگر را پاک کنید.
نکته مهم این است که تغییر رمز عبور همیشه بهتنهایی نشستهای قبلی را منقضی نمیکند. اگر Session سرقتشده همچنان معتبر باشد، مهاجم ممکن است تا زمان پایان اعتبار آن بتواند از نشست استفاده کند؛ به همین دلیل ابطال صریح نشستها باید در اولویت اول باشد.
جمعبندی
Session Hijacking نشان میدهد امنیت حساب کاربری فقط به رمز عبور محدود نمیشود.
Session Cookie پس از ورود، نقش مهمی در شناسایی کاربر دارد و اگر در اختیار مهاجم قرار بگیرد، ممکن است راه دسترسی به حساب را بدون دانستن رمز عبور باز کند؛ حتی اگر MFA فعال باشد.
شناخت روشهای حمله Session Hijacking مانند بدافزارهای Infostealer، حملات XSS، شنود شبکه و Session Fixation به ما کمک میکند قبل از وقوع حادثه، اقدام پیشگیرانه انجام دهیم.
برای کاربران، استفاده از نرمافزارهای مطمئن، Logout منظم، ارتباط HTTPS و مدیریت نشستها از مهمترین اقدامات پیشگیرانه در برابر هک از طریق کوکی هستند.
در سمت سایت نیز پیکربندی صحیح ویژگیهای HttpOnly، Secure و SameSite، بازسازی Session ID پس از ورود و تعیین زمان انقضا برای نشستها میتواند سطح امنیت را بهشکل چشمگیری بالاتر ببرد.
در نهایت، MFA یک لایه امنیتی مهم است؛ اما محافظت از نشست فعال را نباید نادیده گرفت. جلوگیری از Session Hijacking یک اقدام مقطعی نیست؛ ترکیبی از عادتهای امنیتی کاربر و پیکربندی درست سمت سرور است که در کنار هم زنجیره دفاعی را کامل میکنند.





