اپلیکیشنهای تحت وب برای شناسایی و تعامل با کاربرهای احراز هویت شده از نشست (Session) استفاده میکنند. درصورتیکه احراز هویت کاربر و مدیریت نشست بهدرستی پیکربندی نشده باشد، مهاجمان ممکن است بتوانند رمزهای عبور، کلیدها یا توکنهای نشست را به دست بیاورند تا از این طریق به حسابهای کاربران دسترسی پیدا کنند و هویت آنها جعل کنند.
`برای توسعهدهندگان مهم است که اطمینان حاصل کنند که از آخرین نسخه هر چهارچوبی استفاده میکنند`
مدیریت نشستها (Session Management)
مدیریت نشست به فرایند رسیدگی ایمن به چندین درخواست به یک برنامه یا سرویس مبتنی بر وب از یک کاربر یا موجودیت واحد اشاره دارد. به طور معمول، یک نشست زمانی شروع میشود که کاربر هویت خود را با استفاده از رمز عبور یا پروتکل احراز هویت دیگر احراز هویت کند. مدیریت جلسه شامل بهاشتراکگذاری اطلاعات محرمانه با کاربرهای تأیید شده است، به همین دلیل ارتباط از طریق رمزنگاری امن شبکه برای حفظ امنیت مدیریت جلسه ضروری است.
استفاده از چهارچوبها
بسیاری از چهارچوبهای توسعه امروزی ابزارهایی را برای اجرای ایمن مدیریت جلسه ارائه میدهند، اما نقاط ضعف بالقوهای در هر یک از این راهحلها وجود دارد. به همین دلیل `برای توسعهدهندگان مهم است که اطمینان حاصل کنند که از آخرین نسخه هر چهارچوبی استفاده میکنند` تا نشست را بهصورت ایمن پیکربندی کنند.
برخی از تکنیکهای اشاره شده توسط OWASP را در ادامه بهصورت چکلیست تهیه کردهایم که میتوانید باتوجهبه نیاز سامانه خود تمام یا بخشی از آن را پیادهسازی نمایید:
- شناسه نشست همواره باید سمت سرور ایجاد گردد.
- فرایند خروج از حساب کاربری باید به طور کامل نشست را خاتمه دهد و هر گونه اتصالی را منقضی کند.
- فرایند خروج باید از تمامی صفحاتی که احراز هویت در آنها صورت میگیرد، در دسترس باشد.
- باتوجهبه نیاز سازمان و سامانه خود تاحدامکان کوتاهترین زمان را برای منقضی کردن نشست در نظر بگیرید.
- نشست دائمی را مجاز قرار ندهید و بهصورت دورهای نشستها را منقضی نمایید.
- اگر نشستی قبل از ورود کاربر ایجاد شده است و فعال است، آن را خاتمه دهید و بعد از ورود موفقیتآمیز کاربر نشست جدیدی ایجاد نمایید.
- با هر بار احراز هویت یک نشست جدید به فرد اختصاص دهید و نشست پیشین را منقضی کنید.
- اجازه ورود همزمان با یک نشست را برای کاربران فراهم نکنید.
- شناسههای نشست را در URL ها، پیامهای خطا یا گزارشها آشکار نکنید.
- برای محافظت از دادههای نشست در برابر دسترسی غیرمجاز سایر کاربران سمت سرور، کنترلهای دسترسی مناسب را اجرا کنید.
- هنگام تغییر اتصال از HTTP به HTTPS یک شناسه نشست جدید ایجاد کنید.
- تلاش کنید تا جای ممکن تنها از HTTPS استفاده کنید.
- ویژگی “secure” را برای کوکیهای ارسال شده از طریق پروتکل TLS تنظیم کنید.
- کوکیها را با ویژگی “HttpOnly” تنظیم کنید، مگر اینکه به طور خاص به اسکریپتهای سمت کاربر در برنامه خود برای خواندن یا تنظیم مقدار کوکی نیاز داشته باشید.
کدنویسی امن
- اعتبارسنجی ورودیها
- کدگذاری خروجیها
- احراز هویت و مدیریت رمز عبور
- مدیریت نشستها