در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

Session چیست و چگونه کار می کند ؟ قسمت 1

سلام به دوستان عزیز ITPro ای و علاقه مندان به مباحث امنیت شبکه. در قسمت های پیش تمام راجع به session hijacking صحبت شد و سعی بر آن قرار گرفت تا زیر و بم این بحث بصورت تئوری مورد ارزیابی و آموزش قرار بگیرد (هرچند که هیچوقت نمیتوان ادعا کرد که در علم شبکه، مطلبی را بطور صد در صد یاد گرفته ایم). اما بر حسب سوالاتی که دوستان مطرح میکردند در رابطه با این سری از مقالات، متوجه شدم که جای یک بحث در این میان خالی است و آن هم این سوال است: " اساسا HTTP session چیست و چگونه کار میکند؟ " در این مقاله میخواهم در این باره مفصل صحبت کنم تا به عنوان یک مطلب تکمیلی باعث شود بحث session hijacking را خوب یاد بگیریم.

Session چیست؟

Session یکی از آن دسته مفاهیمی است که در علم IT بسته به موقعیت خود میتوان به چیزهای مختلفی اشاره داشته باشد: shell session، tcp session، login session، desktop session، browser session، server session و ... .همین موضوع است که باعث شده تا کنون نتوانیم دقیقا درک صحیحی از یک session داشته باشیم. این مشکل تنها محدود به session نمیشود و مفاهیم دیگری نظیر cache هم دارای همین مشکل هستند: database cache، browser cache، framework cache، network cache و ... . خوب...! از این بحث های حاشیه ای که بگذریم، اولین چیزی که باید در مورد session ها بدانیم، استفاده ای است که از آن ها میشود.

یک session به چه دردی میخورد؟

در حالت کلی مفهوم یک session را باید از روی حالات و وضعیت های مختلف وب اپلیکیشن در زمانی که یک یوزر با آن در ارتباط است، بررسی کرد. از نظر من یک session نمونه ای از کنش های متقابل یک یوزر با یک وب اپلیکیشن است اما تاکید بر این موضوع در اینجا نمیتواند کمک زیادی در فهم قضیه نماید. در حال حاضر برای یک web session بهتر است از این باب وارد شویم: " session ساختاری از داده است که وب اپلیکیشن از آن برای نگهداری موقتی اطلاعات استفاده میکند. این اطلاعات موقتی فقط در زمانی که یوزر با وب اپلیکیشن در ارتباط است کارایی دارد و خصوصیات یوزر را بیان میکنند.

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

داستان را ادامه میدهیم: این حافظه موقت میتواند بصورت یک فایل متنی در file system، در یک دیتابیس و یا بر روی حافظه داخلی برنامه ای که اپلیکیشن را اجرا میکند، وجود داشته باشد. دومین چیزی که باید در این باب بدانیم، ساختار یک session است.


ساختار یک Session

Session یک ساختار داده ای بر مبنای زوج پارامتر " کلید- مقدار (ارزش)" یا همان "key-value" بزبان دیگر است. این ساختار را میتوانید بصورت یک hash table تصور کنید که هر یوزر برای آن که بتواند دیتای خود را در آن قرار دهد، باید یک hash key بگیرد. در بحث session هم میتوان hash key را معادل session ID دانست. یعنی هر یوزری که بخواهد اطلاعات خود را در session ذخیره نماید، باید یک session ID داشته باشد. ساختار اطلاعاتی session شبیه شکل زیر است:

session چیست و چگونه کار میکند؟ - بخش اول

با توجه به شکل بالا، وقتی که شما میگویید "session من" منظورتان غیرمستقیما اشاره به همان اطلاعاتی دارد که داخل session وجود دارد. هر یوزری فقط میتواند به session یا session هایی که مربوط به خود است، دسترسی داشته باشد. Session میتواند هم بر روی سرور و هم بر روی کلاینت ذخیره شود. اگر بر روی کلاینت باشد، توسط مرورگر و عمدتا بصورت یک کوکی ذخیره میشود و اگر بر روی سرور باشد، session ID ها توسط سرور ایجاد و مدیریت خواهند شد. بنابراین اگر میلیون ها کاربر به سرور ارتباط داشته باشند، به ازای تک تک آن ها session id منحصر بفرد ایجاد و ذخیره میشود.خوب حالا میخواهم دقیقا بر روی session های ذخیره شده بر روی سرور زوم کنم:

یک session چگونه کار میکند؟

در این قسمت میخواهیم بگوییم که یوزرها چگونه به session هایشان دسترسی پیدا میکنند؟ در مورد یک اپلیکیشن تک کاربره مثل یک desktop application، فقط یک یوزر وجود دارد، در نتیجه فقط یک session وجود خواهد داشت بنابراین برای اپلیکیشن کار سختی نیست که بین یوزر و session اطلاعاتی او ارتباط برقرار کند. اما در مورد یک وب اپلیکیشن، یک سرور کلاینت های مختلفی را روبروی خود دارد.

در این حالت سرور از کجا متوجه میشود که چه session ای متعلق به یوزری ست؟ این جا دقیقا همان نقطه ای است که نقش و اهمیت session id خود نمایی میکند.قانون کلی به این صورت است که شما به عنوان یک کلاینت، به سرور session id خود را تحویل میدهید و در مقابل، سرور در صورتی که اطلاعات متناظر با session id شما را درون دیتا استور session هایش پیدا کند، حق دسترسی به آن را به شما خواهد داد.

ساختار session شبیه گاوصندوقی ست که دیتای ما درون آن قرار دارد و کلید این گاوصندوق، session id است. سرور اطلاعات session را فقط به یوزری نشان خواهد داد که session id صحیح را ارائه دهد. بنابراین همانطور که در بحث session hijacking هم تاکید داشتیم، اگر مهاجم به هر نحوی بتواند session id شما را بدست آورد، میتواند session شما را برباید. در شکل زیر دقیقتر عملکرد session نشان داده شده است:

session چیست و چگونه کار میکند؟ - بخش اول


در قسمت بعد در رابطه با شکل بالا توضیحات لازم داده خواهد شد.


پایان بخش ششم
مانا باشید.

نویسنده : احسان امجدی
منبع : جزیره امنیت اطلاعات و ارتباطات وب سایت توسینسو
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است
#ساختار_session #آموزش_امنیت_اطلاعات #session_چیست #session_hijacking_چیست؟ #session_به_چه_دردی_میخورد #آموزش_امنیت_شبکه #session_چگونه_کار_میکند؟ #tcp_session_چیست؟ #application_session_hijacking_چیست
عنوان
1 Session چیست و چگونه کار می کند ؟ قسمت 1 رایگان
2 Session چیست و چگونه کار می کند ؟ قسمت 2 رایگان
3 Session Hijacking چگونه انجام می شود ؟ قسمت 3 : نقش پروتکل TCP رایگان
4 Session Hijacking چگونه انجام می شود ؟ قسمت 4 : Session چیست ؟ رایگان
5 Session Hijacking چگونه انجام می شود ؟ قسمت 5 : لایه 7 و 3 شبکه رایگان
6 Session Hijacking چگونه انجام می شود ؟ قسمت 6 : Desync Attacks رایگان
7 Session Hijacking چگونه انجام می شود ؟ قسمت 7 : WebApp Hijack رایگان
8 Session Hijacking چگونه انجام می شود ؟ قسمت 8 : ابزارهای Hijack رایگان
9 روش های جلوگیری از Session Hijacking قسمت 9 : بخش 1 رایگان
10 روش های جلوگیری از Session Hijacking قسمت 10 : بخش 2 رایگان
زمان و قیمت کل 0″ 0
2 نظر
میلاد اسحاقی

به به ، این جور مقاله ها مثل یک عمل جراحی سنگین میمونه که میخواد کوچکترین قسمتو بشکافه و بررسی کنه . البته همه مقاله زیبا هستند اما موشکافی کردن جالب و جذاب خواهد بود

احسان امجدی

ممنون ميلاد عزيز... بعضي موقع ها نيازه كه يسري مفاهيم رو بقول شما جراحي كنيم و مفاهيم جديدتري رو كشف كنيم.

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره پاییزه می تونی امروز ارزونتر از فردا خرید کنی ....