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

و

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

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

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

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

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


قبل از این که توضیح مرتبط را ارائه دهم، دقت کنید که JSP اطلاعات session id را با نام JSESSIONID ارسال و ذخیره میکند. در مورد ASP هم ASPSESSIONID و برای PHP هم PHPSESSIONID صدق میکند. پس از آن که شما به صفحه وب مورد نظر لاگین کردید، اپلیکیشن، اطلاعات هویتی مثل یوزر و پسورد شما را اعتبار سنجی کرده و لاگین می کنید. در این موقع session id در session ذخیره میشود و هر زمانی که درخواستی را به سرور ارسال کنید، نیازی به لاگین مجدد نخواهید داشت. البته به تاریخ expire موجود در session هم دقت کنید. در مورد این موضوع بعدا مفصل صحبت خواهد شد. طبق وعده ای که از بخش پیش دادیم، الان میخواهم در رابطه با مکانیسم کاری session و شکل زیر صحبت کنم:

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


دیاگرام بالا را مرور میکنیم تا متوجه شویم که وقتی شما درخواستی را برای سرور ارسال میکنید، چه اتفاقاتی می‌افتد. به عنوان مثال شما به صفحه gmail وارد شدید و لاگین کردید. تا اینجای کار سرور یک session بهمراه session id برای شما ایجاد و بسمت کلاینت که شما باشید (فرضا بصورتیک کوکی) ارسال کرده است. حال در ادامه میخواهید به صفحه drafts خود بروید.

1. شما یک http request را به سرور ارسال میکنید و از آن درباره صفحه drafts میپرسید. به همراه این درخواست شما عملا session id خود را نیز به سرور ارسال کردید تا به سرور بگویید " هی...! من همانی هستم که قبلا با این session id احراز هویت شدم؛ صفحه drafts من را بمن نشان بده". Session id معمولا در قالب یک کوکی ارسال میشود، علاوه بر کوکی میتواند با پارامترهای POST یا GET نیز ارسال شود. در اینجا طبق شکل فرضا session id شما برابر 5 است.
2. سرور درخواست شما را دریافت میکند. قبل از آنکه سرور بشما صفحه drafts را نشان دهد، session id شما را چک و در session store خود آن را جستجو میکند. مقدار 5 یعنی همان session id شما پیدا میکند، بنابراین اطلاعات مرتبط با ورودی 5 خود را برای code engine ( php, java, ruby,…) دسترس پذیر میکند.
3. در این مرحله سرور کد مربوط به درخواست شما یعنی همان باز شدن صفحه drafts را اجرا میکند.
4. کد، با دریافت session id شما از session ای که پیش تر توسط سرور ایجاد و نگهداری میشد، اجرا میشود، سپس با استفاده از session id درخواست شما را از دیتابیس طلب میکند: " drafts یوزری که صاحب این session id است، بمن بده"
5. در نهایت وقتی کد، صفحه مورد نظر شما را از دیتابیس گرفت، شروع به ساختن یک صفحه HTML میکند و drafts های شما را در آن قرار داده و به سرور تحویل میدهد.
6. سرور بنا به session id که ارائه کرده بودید، صفحه drafts را برای شما میفرستد.

زندگی اینترتی بدون وجود Session ID!

خوب! حالا حالتی را فرض کنید که در آن بجای session id، فقط در درخواست ارسالی به سرور، user id خود را فرستادید و به سرور گفتید که قصد مشاهده صفحه drafts را با استفاده از این user id دارید. این به این معنی است که اگر هرکسی user id شما را بداند، میتواند به صفحه drafts های شما دسترسی داشته باشد و این دقیقا موضوعی است که هیچکسی دوست ندارد با آن روبرو شود. شما ترجیح میدهید که اپلیکیشن، اجازه دسترسی به اطلاعات مربوط به صفحه drafts را فقط به خودتان دهد و نه هر شخص دیگری که user id شما را دارد.


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


فرض میکنیم که هیچ session id در این تبادل وجود ندارد یا بهتر است بگوییم فرض کنیم اصلا session id ای تعریف نشده است؛ وقتی که شما صفحه drafts را از سرور درخواست میکنید، سرور واقعا نمیداند که drafts چه کسی را شما درخواست کرده اید. بنابراین ابتدا از شما میخواهد که به اپلیکیشن لاگین کنید. گفتیم که HTTP پروتکل شلخته و بی قاعده ایست؛ بنابراین در حافظه خود سابقه لاگین کردن های شما را بخاطر نمیسپارد و به همین علت نمیداند که شما الان لاگین هستید. در هر درخواستی که بسمت سرور بفرستید، چون http چیزی از گذشته خاطرش نیست، همین داستان مجددا اجرا میشود و از شما خواسته میشود که علیرغم لاگین بودن، لاگین کنید. واضح است که این موضوع خیلی خواب آور و خسته کننده است.


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


پایان بخش هفتم
مانا باشید.

نویسنده : احسان امجدی
منبع : جزیره امنیت اطلاعات و ارتباطات وب سایت توسینسو
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است
#session_چیست؟ #jsessionid_چیست؟ #aspsessionid_چیست؟ #آموزش_امنیت_اطلاعات #user_id_چیست؟ #phpsessionid_چیست؟ #آموزش_امنیت_شبکه #tcp_session_چیست؟ #session_id_چیست؟ #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
1 نظر
farhadmm1122

عالی بود ... و بسیار مفید

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

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