مدیریت دسترسی کاربر

منتشر شده در دسته : بلاگ, تست نفوذ وب

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

مدیریت دسترسی کاربر

  • احرازهویت
  • مدیریت نشست
  • کنترل دسترسی

هر کدام از این مکانیزم ها نقشی کلیدی در امنیت دسترسی کاربران دارند که به شرح آنها می پردازیم :

احرازهویت

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

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

در اپلیکیشن های وب که نیازمند امنیت بالاتر هستند همچون بانک های آنلاین این مدل کمی پیچیده تر می باشد و اطلاعات بیشتری از کاربر در حین ورود درخواست می شود. همچنین می توان از مکانیزم های امنیتی دیگر همچون گواهینامه ها , کارت های هوشمند و توکن های چالش-پاسخ استفاده کرد.

علاوه بر خود فرایند ورود و لاگین به اپلیکیشن بایستی دیگر قابلیت ها همچون عضویت خودکار , بازیابی حساب کاربری , بازیابی رمزعبور و تغییر رمزعبور نیز به اپلیکیشن اضافه گردد.

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

مدیریت نشست

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

تقریبا همه اپلیکیشن های وب از طریق ایجاد یک نشست برای هر کاربر و اختصاص یک توکن به کاربر برای شناسایی نشست به این نیاز اساسی رسیدگی می کنند. خود نشست (Session) مجموعه ای از داده ها می باشد که بر روی سررو نگهداری می شود و وضعیت تعامل کاربر با اپلیکیشن وب را رهگیری می کند. توکن در اینجا چه نقشی دارد؟

توکن یک شناسه رشته ای یگانه می باشد که اپلیکیشن آن را به نشست ربط می دهد. زمانیکه یک کاربر یک توکن دریافت می کند , مرورگر به صورت خودکار در هر درخواست آن را به سرور ارسال می کند. از این طریق اپلیکیشن می تواند درخواست و کاربر را به یکدیگر ربط بدهد. کوکی های HTTP که قبلا بارها درباره آنها صحبت کردیم , روش استاندارد برای انتقال شناسه توکن می باشند هر چند بسیاری از اپلیکیشن ها از فرم فیلدهای مخفی یا کوئری URL برای انجام این کار استفاده می کنند (روش مناسبی نیست). در صورتیکه کاربر برای مدت زمان مشخصی درخواستی را ارسال نکند , در حالت ایده آل نشست منقضی خواهد شد.

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

در صورتیکه توکن ها دارای نرخ تصادفی بالا نباشند و به سادگی قابل حدس زدن باشند , بسیار آسیب پذیر خواهند بود. تعداد کمی از اپلیکیشن ها از توکن استفاده نمی کنند ! در صورتیکه مکانیزم درون ساخت احرازهویت HTTP استفاده شده باشد , مرورگر به صورت خودکار اعتبارنامه های هر کاربر را درون هر درخواست ارسال می کند!! خیلی امن نیست. در دیگر موارد اپلیکیشن اطلاعات وضعیت کاربر را به جای ذخیره سازی در سرور به صورت رمزنگاری شده در سمت کلاینت ذخیره می کند. در واقع نشست ها به جای ذخیره در سمت سرور بر روی سیستم کلاینت ذخیره می شوند.

کنترل دسترسی

آخرین گام منطقی در فرایند نگهداری و مدیریت دسترسی کاربر ایجاد و اعمال تصمیماتی مبتنی بر این موضوع می باشد که آیا همه درخواست ها بایستی مجوز اجرا داشته باشند یا نادیده گرفته شوند ؟ در صورتیکه مکانیزم های قبلی به درستی پیاده سازی شده باشند تا اینجا کار اپلیکیشن هویت کاربر هدف را می داند و می تواند تشخیص دهد که درخواست از سمت کدام کاربر ارسال شده است. اکنون بایستی تصمیم بگیرد که این کاربر اجازه اجرای چنین دستوری را بر روی اپلیکیشن دارد یا خیر. آیا اجازه دریافت یکسری اطلاعات خاص را دارد یا خیر.

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

این وظیفه اپلیکیشن می باشد که بر اساس هویت و شناسه کاربر وی را محدود کند. به دلیل طبیعت پیچیده نیازمندی های کنترل دسترسی , این مکانیزم معمولا جایگاه آسیب پذیری های زیادی می باشد.

خوشحال می شویم دیدگاههای خود را در میان بگذارید * فرصت پاسخگویی به سوالات در بلاگ وجود ندارد

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *