چند وقت پیش دستورالعملی دریافت کردیم که ما رو ملزم میکرد که حساب کاربری مشتریانمون رو بعد از تلاش ناموفق برای لاگین برای مدتی مشخص بلاک کنیم.
هدف از ابلاغ این دستورالعمل جلوگیری از brute force attack یا همون حمله هکر به منظور کشف کلمه عبور کاربر با آزمون و خطا بود. در این نوع حملات، هکر برای تشخیص کلمه عبور، لیستی از کلمات عبور رندوم رو با نام کاربری مورد نظرش به سیستم میده تا بالاخره یکی از کلمات عبور با نام کاربری همخوان بشه و بتونه به سیستم لاگین کنه. (دلیل اینکه همیشه تاکید میکنن که از کلمات عبور غیرقابلحدس استفاده کنین هم همینه! - برای اینکه باورتون بشه از این لینک میتونین تعداد یک میلیون کلمه عبور پر استفاده که هکرها بسیار علاقمندن که روی اکانتتون تعریف شدهباشه رو مشاهده کنید)
برای تصمیمگیری در خصوص بلاک شدن اکانت باید اول به چند سوال جواب بدیم:
سوال اول: آیا هر کاربری که کلمه عبورش رو اشتباه وارد میکنه حتما یک هکر هست؟
قطعا نه!
سوال دوم: دلایلی که ممکنه کاربر کلمه عبور رو چندین بار اشتباه وارد کنه چی هست؟
ممکنه کاربر به علت عدم تجربه کافی یا ضعف در بینایی نتونه عبارت صحیح رو به وسیله صفحه کلید کامپیتور یا موبایل تایپ کنه. همین باعث بروز خطاهای مکرر در تایپ کلمه عبور میشه. از اونجایی که سیستمها بعد از ۳ تا ۵ بار تلاش ناموفق اکانت رو بلاک میکنن کاربر مورد نظرمون شانس کمی برای تلاش دوباره داره.
مشکلی که عمده ما ایرانیها باهاش مواجه هستیم! بسیار بسیار محتمل هست که کاربر فراموش کنه زبان صفحه کلید کامپیوترش رو به انگلیسی تغییر بده و با صفحه کلید فارسی رمزش رو تایپ کنه. در این حالت احتمال اینکه کاربر دیر متوجه تغییر زبان کیبورد بشه خیلی زیاده. گاهی اوقات ممکنه تا ۳ بار تلاش کنه و بعد متوجه اشتباهش بشه.
ممکنه طراحی رابط کاربری اپلیکیشن نامناسب و گنگ باشه. فرض کنید هنگام کلیک روی دکمه «ورود» کاربر احساسی از اینکه روی دکمه کلیک کرده نداشته باشه. (منظورم نمایش حالت لودینگ یا ... هست) و به خاطر سرعت کم اینترنت سرویس لاگین به موقع پاسخ نده. نتیجه این میشه که کاربر شک میکنه که درست روی دکمه ورود کلیک کرده یا نه. برای همین ممکنه چندین بار کلیک کنه و در نتیجه چندین ریکوئست لاگین با پسورد اشتباه به سمت سیستم روانه کنه.
به این مشکل، عدم نمایش پیامهای صحیح و بازدارنده رو هم اضافه کنید. خیلی از سیستمها گفتگویی با کاربر ندارن و کاربر رو در بیخبری کامل رها میکنن.
ممکنه کاربر واقعا کلمه عبور حسابش رو فراموش کرده باشه و به دلیل عجله برای لاگین یا عدم حوصله کافی برای ورود به فرایند فراموشی کلمه عبور میخواد چند بار شانس خودش رو امتحان کنه. در این حالت هم ما با هکر طرف نیستیم و طرف حسابمون واقعا یک کاربر درمانده هست که تلاش داره وارد حسابش بشه.
علاوه بر مواردی که در این مقاله گفتم، دلایل بیشمار دیگری هم ممکنه باعث بشه کاربر کلمه عبور خودش رو چندبار اشتباه وارد کنه. آیا در این شرایط کاربر مستحق این هست که حسابکاربریش بلاک بشه؟ مخصوصا در پلتفرمهایی که حساس هستن و تاخیر در لاگین کاربر باعث از دست رفتن یک فرصت طلایی میشه. مثل سامانههای معاملات آنلاین در بورس و ... . جواب این سوال قطعا «نه» هست. اما راهکار چیه؟
سوال سوم: آیا بلاک کردن اکانت راهکار مناسبی برای جلوگیری از brute force attack هست؟
بلاک کردن اکانت برای جلوگیری از حمله به حسابهای کاربری راهکار مناسبی نیست و به نظر میرسه فقط پاک کردن صورت مساله باشه. به خاطر داشته باشید که اکثر حملات به وبسایتها گسترده هستند و محدود به یک اکانت خاص نمیشه. در این حالت هکر میتونه هنگامی که یک حساب بلاک شد از روی اون رد شده و حسابهای دیگه رو امتحان کنه تا زمانی که اولین حسابی که به آن حمله کرده آنبلاک شود.
از طرفی برای وبسایتهایی که نام کاربری مشتریان به راحتی قابل حدس باشه، بلاک کردن اکانت خودش یه پاشنه آشیل و نقطه آسیب محسوب میشه. فرض کنید حساب کاربری مشتریان شما به صورت پیشفرض کد ملی یا شماره موبایلشون باشه. این نوع نامهای کاربری به راحتی قابل حدس هستن. هکر میتونه حملهای ترتیب بده و برای ایجاد اختلال گسترده در وبسایت شما به همه حسابهای کاربری حمله کنه و کل اکانتهای مشتریان شما رو بلاک کنه. نتیجه چیزی نیست جز تعداد زیادی مشتری ناراضی که تیم پشتیبانی شما رو هدف میگیرن.
هنگامی که کاربر در حال تغییر کلمه عبور یا ایجاد حساب کاربری جدید هست، کنترل کنید که کلمه عبور مستحکمی رو انتخاب کنه. این موارد میتونه مانع از انتخاب کلمه عبور ضعیف و نفوذ به اکانت کاربرانتون بشه:
در صورتی که کاربر X بار کلمه عبور خودش رو اشتباه وارد کنه، میتونید از دفعه X به بعد کاربر رو ملزم کنید تا برای ورود به سیستم کد کپچا وارد کنه. اینطوری هم کار هکرها رو سخت کردید هم اکانت کاربرتون بلاک نشده.
میتونید از انواع مختلف روشهای لاگین دوعاملی برای افزایش امنیت حسابهای کاربری استفاده کنید. ارسال OTP به تلفن همراه، استفاده از نرمافزارهای authenticator و ... میتونه امنیت حسابهای کاربری شما رو تا حد زیادی تضمین کنه و دیگه نیازی به بلاک کردن اکانت نداشته باشید
میتونید فرایند مشخصی تعیین کنید که در صورتی که کاربر برای X بار کلمه عبور حسابش رو اشتباه وارد کرد، فرم فراموشی کلمه عبور به طور مشخصتری به کاربر نمایش داده بشه یا به هر نحوی به کاربر این پیشنهاد رو بدیم که میتونه از فراموشی کلمه عبور استفاده کنه. در این حالت کاربرانی که واقعا کلمهعبورشون رو فراموش کردن به مسیر درستی هدایت میشن.
همچنین در فرایند فراموشی کلمه عبور سعی کنید سادهترین و امنترین راه رو انتخاب کنید. امروزه دسترسی کاربرها به اساماسهاشون خیلی راحتتر از ایمیل و لینک فعالسازی هست. میتونید با مکانیزم ارسال OTP فرایند فراموشی کلمه عبور رو راحتتر کنید تا کاربرها مقاومتی برای ورود به این فرایند نداشته باشند.
امنیت مهمترین پارامتر کسب و کار شماست. وبسایتی که امنیت کاربرهاشو تامین نکنه خیلی زود منزوی و ترک میشه. اما مهمتر از تامین امنیت، نحوهی انجام این کار هست. باید فرایندها رو به نحوی بچینید که کمترین تاثیر رو در تجربه کاربری روزانه کاربر داشته باشه. مردم یک شهر انتظار دارن که امنیتشون همیشه تضمین شده باشه. اما اگه هرروز توی خیابون ایستبازرسی ببینن، نه تنها خوشحال نمیشن بلکه سطح نارضایتیشون به شدت افزایش پیدا میکنه.