**نشست‌ربایی** (به انگلیسی: Session Hijacking) به‌طور کلی به حمله‌ای گفته می‌شود که در آن session (یا در اصل session key) جعل می‌شود.

نشست (Session) چیست
-------------------

cookie اطلاعاتی هستند که به‌طور موقت ذخیره می‌شوند و تا زمان اعتبار آن، آن اطلاعات باقی می‌مانند.

معمولاً از این اطلاعات در وب‌گاه‌ها استفاده می‌شود تا کاربر مجبور نباشد این اطلاعات را چندین بار وارد کند. مرسوم‌ترین استفاده آن برای اطلاعات ورود به سایت است.

بدین گونه که پس از وارد کردن اطلاعات ورود به سایت، نرم‌افزار وبگاه یک جلسه ایجاد و در آن اطلاعات ورود را ذخیره می‌کند و تا زمان مشخص شده، این اطلاعات ذخیره می‌مانند.

بنابراین کاربر با داشتن کلید جلسه (session key) در مرورگر خود، برای باز کردن صفحات دیگر وبگاه نیاز به وارد کردن دوباره رمز عبور نخواهد داشت.

طبق توضیحات داده شده در مورد نحوه عملکرد جلسه‌ها طبیعی است که شخص نفوذگر با داشتن کلید جلسه می‌تواند خود را به عنوان کاربر وارد شده در وبگاه معرفی کند و بدیهی است که این امر بدون داشتن نام کاربری یا رمز عبور قابل انجام خواهد بود که در اغلب مواقع نیز نفوذگر کلید جلسه مدیر وبگاه را جعل می‌کند و از این طریق وارد صفحه مدیریت وبگاه می‌شود.

راه‌ها و راهکارها
-----------------

برای جعل کردن کلید جلسه راه‌های بسیاری وجود دارد:

### XSS

با وجود حفره XSS، نفوذگر می‌تواند کدهای جاوااسکریپت روی سیستم قربانی اجرا کند.

از جمله کارهایی که می‌توان با جاوا اسکریپت انجام داد، سرقت Cookieها و جلسه‌ها است.

جلوگیری از XSS و همچنین HttpOnly کردن جلسه‌ها و کوکی‌ها از جمله راه‌های جلوگیری از این روش هستند.

### استراق سمع(Session sidejacking)

در این روش نفوذگر از طریق packetهای TCP/IP اطلاعات رد و بدل شده را به روش استراق سمع (معمولاً در شبکه‌های بیسیم) دریافت و از آن کلید جلسه را استخراج می‌کند.

برای جلوگیری از این راه علاوه بر تأمین امنیت شخصی، استفاده از پروتکل امن(https) می‌تواند به جلوگیری از این روش کمک کند. شایان ذکر است که اگر در https استراق سمع صورت گیرد، مرورگر با نمایش پیغام خطا شما را مطلع می‌کند.

### تثبیت نشست (session fixation)

در این روش نفوذگر کلید جلسه شخص مورد هدف را آن چیزی قرار می‌دهد که خود می‌خواهد. از این طریق شخص قربانی با وارد شدن به سایت (همراه با کلید جلسه که نفوذگر به او تحمیل کرده) این امکان را به مهاجم می‌دهد تا با استفاده از همان کلید جلسه خود را به جای قربانی معرفی کند.

برای جلوگیری از این روش، مهم‌ترین کار برقراری امنیت شخصی است و اعتماد نداشتن به لینک‌هایی که فرستاده می‌شود.

به عنوان مثال اگر مهاجم آدرس  را برای قربانی ارسال کند و قربانی بدون توجه به آدرس آن را باز کند، با کلید جلسه معادل TEST وارد سایت می‌شود و اگر در سایت وارد شود، مهاجم نیز می‌تواند با TEST(یعنی مراجعه به آدرس گفته شده در بالا) وارد سایت شود.

### سایر روش‌ها

از راه‌های دیگر می‌توان دسترسی داشتن از سرور و خواندن کلید جلسه‌ها یا حتی به حدس زدن کلید جلسه اشاره کرد.

به‌طور کلی علاوه بر روش‌های گفته شده، محدود کردن کلید جلسه به یک IP خاص نیز راه مناسبی برای مقابله با این نفوذ است. به این صورت که می‌توان در اطلاعات ذخیره شده جلسه، اطلاعاتی از قبیل IP نیز ذخیره و زمانی که اطلاعات درون جلسه تطابق داده می‌شوند، IP نیز تطابق داده شود و در صورتی ناهمخوانی، آن جلسه را باطل کرد.

یکی از راه‌های دیگری که می‌تواند در بهبود امنیت کمک کند، تعریف زمان timeout است. به این صورت که به عنوان مثال اگر بعد از گذشت مثلاً پنج دقیقه، کاربر هیچ فعالیتی در سایت نداشته باشد، آن جلسه باطل شود. این امر باعث می‌شود که حتی در صورت به سرقت رفتن کلید جلسه، اگر پس از مدتی نفوذگر بخواهد وارد سایت شود، سیستم اجازه ورود را به او ندهد.

منابع
-----

غفاری‌نیا، امید. گروه امنیتی آفتاب. Session Hijacking، عصر ارتباط، ۲۲ آبان ۱۳۸۹، شماره ۳۸۲. pdf