در سال 2017 توسعهدهندگان بسیار کمی از بابت امنیت اپلیکیشنهای موبایلی نگران بودند. تا جایی که WannaCry و Petya به عنوان دو بد افزار بسیار مخرب وارد عرصه شده و میلیونها دلار خسارت به بار آوردند. با دانستن این موضوع دیگر سوال اصلی نباید این باشد که «آیا پیادهسازی لایههای امنیت را میخواهیم یا نه؟» بلکه باید بگوییم «آیا به اندازه کافی امنیت خوبی داریم یا خیر؟».
فارغ از آنکه چه اپلیکیشنی را در چه حوزهای ایجاد میکنید، در هر صورتی باید المانهای اصلی امنیت را در اپلیکیشن پیادهسازی کرده و راجع به آن نگران باشید. حتی زمانی که قصد کم کردن هزینهها را دارید، حذف کردن لایههای امنیت نباید بخشی از رویکردتان باشد.
در این مطلب از وبسایت راکت، قصد داریم تا در ارتباط با رویکردهایی صحبت کنیم که با پیروی از آنها میشود لایهای از امنیت را به اپلیکیشنها آورد. مطمئنا این موارد کافی نخواهند بود چرا که امنیت هیچ شرکت و وبسایتی صد در صد نیست.
بررسی بیشترین آسیبپذیریهای مربوط به اپلیکیشن
مطمئنا با پیشرفت تکنولوژیهای مختلف، میزان آسیبپذیریها نیز افزایش پیدا میکند. با این حال برخی از این آسیبپذیریها را میتوان در جاهای بسیار زیادی مشاهده کرد و از این رو ابتدا باید فکری به حال این موارد بکنیم. در ادامه این مطلب قصد داریم تا به برخی از این موارد نگاهی داشته باشیم.
احرازهویت و اعتبارسنجی
احرازهویت پروسهای است که در آن «چه کسی بودن» یک کاربر بررسی میشود. برای مثال اگر کاربری ادعا میکند که ادمین وبسایت است، باید براساس یکسری موارد این ادعا ثابت شود. از طرفی دیگر اعتبارسنجی، قابلیتهای انجام یک کار توسط یک کاربر را بررسی میکند. برای مثال اگر کاربر نویسنده وبسایت است، نمیتواند پیکربندی اصلی وبسایت را تغییر دهد، این فیلتر باید توسط اعتبارسنجی پیادهسازی شود.
یکی از حملاتی که بیشتر این قسمت را مورد هدف قرار میدهد brute force است. در این عملیات، شخص نفوذگر تلاش میکند تا با دادن نام کاربری و رمز عبور وارد حساب کاربری شود. این کار از طریق یک لیست طولانی از رمز عبورهای ممکن انجام میشود.
توسعهدهندگان میتوانند با انجام کارهای زیر از بروز چنین اتفاقی جلوگیری کنند:
- محدود کردن تعداد تلاشهای ناموفق: یکی از رویکردهای معمولی این است که ما تنها بین ۳ تا ۵ بار به یک IP اجازه ورود را بدهیم. اگر بیشترین از مقدار تلاش انجام شد و بی نتیجه ماند، باید در یک محدوده زمانی IP را بلاک کرد.
- خودداری از آیدیهای قابل پیشبینی: سعی کنید برای آیدیهای کاربری از قالبهای متنی معناداری استفاده نکنید. برای مثال آیدی که در آن ارقام مربوط به تاریخ و زمان ثبت نام کاربر وجود دارد، امکان بالایی برای شناسایی توسط نفوذگر دارد.
- از یک پیغام برای تمام عملیاتهای ورود استفاده کنید: زمانی که کاربر وارد وبسایت میشود خواه رمز عبور را اشتباه وارد کرده باشد و یا نام کاربری، در هر صورت سعی کنید یک پیغام را نشان دهید. زمانی که پیغامی مانند «رمز عبور را اشتباه وارد کردهاید» را نمایش دهید به این معناست که نام کاربری را درست وارد کرده و حال تنها ورودی اشتباه رمز عبور است.
- بررسی قدرت رمز عبور: در اپلیکیشنی که ایجاد کردهاید، حتما یک بررسی کننده رمز عبور را ایجاد کنید. مطمئن شوید رمزهای عبوری که در اپلیکیشن شما وارد میشود از قدرت کافی برخوردار هستند. بیشتر بودن از ۸ کاراکتر، استفاده از اعداد، حروف و کاراکترهای خاص و… فاکتورهای مناسبی برای بررسی رمز عبور هستند.
- احرازهویت چندگانه: برای آنکه روند ورود به اپلیکیشن را بهتر کنید میتوانید از احرازهویت چندگانه استفاده نمایید. در این حالت جدای از وارد کردن رمز، کاربر مجبور خواهد بود تا چند دیوار امنیتی دیگر را نیز پشت سر بگذارد. استفاده از شماره تماس، ارسال پیام یکبار مصرف برای ورود، اسکن بیومتریک و… راهکارهایی برای پیادهسازی احرازهویت چندگانه هستند.
انقضای Session
این مورد میتواند منجر به دو نوع از آسیبپذیری شود – ابتدا ممکن است که یک اپلیکیشن به صورت کلی روال انقضای Session را نداشته باشد که باعث میشود تا Session همواره حتی در صورت نبود فعالیت کاربری باز باشد و حالت دوم اینکه ممکن است سرور روال Logout را به درستی انجام ندهد. در هر دو صورت امکان اینکه ID کاربر توسط نفوذگر شناسایی شود وجود دارد.
میتوانید با پیادهسازی کارهای زیر از بوجود آمدن چنین مشکلی جلوگیری کنید:
- استفاده از فرایند انقضای Session: اگر در یک مدت زمان خاص هیچ فعالیتی از طرف کاربر انجام نشد، حساب وی را Logout کنید. در تعیین این مدت زمان دقت کنید چرا که نه باید بسیار کوتاه و نه بسیار طولانی باشد.
- منقضی کردن IDها: زمانی که یک کاربر از اپلیکیشن خارج شد و بعد از مدتی برگشت، از ID جدیدی استفاده کنید.
دسترسی به داده
هر چقدر گستره اطلاعاتی که از کاربران دارید بیشتر باشد، احتمال دزدیده شدن آنها بیشتر است. از این رو همواره بهتر است که میزان کمتری از اطلاعات مهم کاربری را در اپلیکیشن خود داشته باشید. بهتر است تنها موارد ضروری را از آنها پرسیده و موارد دیگر را از فرمهایتان حذف کنید. هیچ گاه مقدار پیشفرضی به یکسری از گزینههای مهم ندهید. بگذارید که کاربران به خوبی ورودیها را بررسی کرده و براساس آنها تصمیم خود را بگیرد. به عنوان یک نکته مهم دیگر، به کاربران میزان امنیتی که برقرار میکنید را بگویید.
برای شرکتهایی که در اروپا مستقر هستند رعایت کردن اصول GDPR و وجود شفافیت در شیوه دسترسی به داده کاربران بسیار مهم است. از این رو در این ارتباط نیز باید توجه داشته باشید.
مشکلات رمزنگاری
یکی دیگر از آسیبپذیریها نبود رمزنگاری درست روی دادههایتان است. این موضوع بیشتر روی ارتباطی که بین قسمتهای مختلف اپلیکیشن ایجاد میکنید تاثیرگذار است. زمانی که دادههایتان را به صورت خام و بدون رمزنگاری ارسال میکنید احتمال دزدیده شدن آن بسیار زیاد است.
هر زمان که قصد امن سازی دادهها را در یک ارتباط داشتید سعی کنید که از رمزنگاری end-to-end استفاده نمایید. یکی از پروتکلهای پیشرفته که برای رمزنگاری میتوانید استفاده کنید SHA-256 است.
مشکلات ارتباطی
اگر در اپلیکیشنتان از SSL استفاده نکرده باشید باید منتظر دزدیده شدن اطلاعات وبسایتتان باشید. این موضوع به حدی مهم است که حتی برخی از شرکتها استفاده از آن را به صورت رایگان در اختیار هر کسی قرار میدهند. استفاده از SSL که در واقع یک لایه امنیتی است باعث میشود که دادههای ارسال شده میان سرور و کلاینت رمزنگاری شود.
استفاده از کتابخانهها و APIها
استفاده از کتابخانهها و APIهایی که به صورت عمومی منتشر میشوند خود یک آسیبپذیری است. چرا که اگر یکی از این موارد مشکلی داشته باشند، به اپلیکیشن شما نیز مشکل را اضافه میکنند. همواره مطمئن شوید که از کتابخانههایی استفاده میکنید که توسط افراد و شرکتهای معتبری ساخته شدهاند.
خطرهای جدید
همانطور که گفته شد، آسیبپذیریهای مربوط به اپلیکیشنها روز به روز در حال بیشتر شدن هستند. حتی اگر قرار باشد که بهترین مکانیسمهای امنیتی را روی اپلیکیشن اعمال کرده باشیم باز هم امکان آنکه اپلیکیشن ما مورد حمله قرار گرفته و آسیب ببیند زیاد است. تکنولوژیهایی که مداوم در حال تغییر و گسترش پیدا کردند بیشترین حملات را به خود میبینند. برای مثال IoT یکی از موضوعاتی است که هر روز در حال گسترش است و این موضوع خود باعث میشود که نگرانی از بابت آسیبپذیریها بالا باشد.
برای این مشکل سعی کنید همواره فردی فعال باشید و خبرها و موضوعات جدید را دنبال کنید. سعی کنید که مهمترین موضوعات و خطرات را پیدا کرده و پیگیرشان باشید. بروزرسانیهای امنیتی نیز موضوع دیگری است که باید به صورت مداوم روی اپلیکیشنتان اعمال کنید.
در پایان
هر محصول نرمافزاری نیاز دارد تا در ارتباط با امنیت خود نگران باشد. مهم نیست که شما یک محصول در حد اپلیکیشنهای گوگل ایجاد میکنید و یا یک استارتاپ کوچک دارید، در هر صورت امنیت موضوعی است که باید روی اپلیکیشنتان اعمال شود. استفاده از استانداردهای امنیتی میتواند بسیار تاثیرگذار باشد و به عنوان قدم ابتدایی شما روی امنیت اپلیکیشنتان به حساب بیاید. در همین حال هیچوقت خبرهای جدید و بروزرسانیهای امنیتی را فراموش نکرده و همواره آنها را دنبال کنید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید