فلاتر

روش های افزایش امنیت اپلیکیشن در فلاتر

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

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

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

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

مبهم سازی کدهای فلاتر

به شکل خیلی ساده مبهم سازی کدها در برنامه نویسی که به آن obfuscation میگویند روندی است تا خوانایی کدهای نوشته شده را برای انسان سخت تر کند.

علت اینکار این است که با کمک مهندسی معکوس دسترسی به کلیدها, API, نام توابع و کلاس ها امکان پذیر میباشد. مخصوصا در اپلیکیشن های اندرویدی که فایل apk به شکل آسان و ساده ای دیکد میشود. به همین منظور اگر یک برنامه نویس فلاتر هستید قطعا این مورد را رعایت کنید.

مبهم سازی امکان دسترسی به اطلاعات حساس را برای مهاجمان سخت تر میکند.

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

flutter build apk --obfuscate --split-debug-info=/<project-name>/<directory>

مبهم سازی کدها در حال حاضر در نسخه های اندروید, دسکتاپ و iOS توسط فریمورک فلاتر پشتیبانی میشود.

حفاظت از اطلاعات در پس زمینه

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

امنیت اپلیکیشن

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

برای پیاده سازی این قابلیت میتوانید از پکیج secure_application استفاده کنید.

احراز هویت داخلی

در این بخش باز تمرکز خودمون و روی افزایش امنیت اطلاعات کاربران و حفظ حریم خصوصی آنها میگذاریم.

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

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

افزایش امنیت اطلاعات به وسیله رمزنگاری

در هر اپلیکیشنی نیاز به ذخیره سازی اطلاعات به شکل دائمی وجود دارد. این اطلاعات عموما یا کم حجم هستند و از Shared Prefences ها استفاده میکنیم که اطلاعات را به صورت کلید و مقدار ذخیره میکنند و یا حجم اطلاعات بیشتر است و نیاز به یک پایگاه داده داریم که از دیتابیس sqflite استفاده میکنیم.

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

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

به همین منظور در برنامه نویسی فلاتر برای ذخیره اطلاعات به شکل امن در SharedPreferences از پکیج flutter_secure_storage میتوانید استفاده کنید. همچنین برای افزایش امنیت دیتابیس برنامه پکیج sqflite_sqlcipher گزینه مناسبی در حال حاضر میباشد.

گوشی های روت یا جیلبریک شده

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

آشنایی با مفهوم Mixin در زبان برنامه نویسی دارت

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

Hesam

View Comments

  • سلام.
    تفاوت SharedPreferences با flutter_secure_storage در چیست؟
    در صورتی که از SharedPreferences استفاده کنیم مشکلی پیش میاد؟
    در اپلیکیشن های موبایلی session و cookie ها برای کلاینت‌های موبایل هیچ مفهومی نداره و شما نمی تونید session یا cookie رو با اپلکیشن موبایل به اشتراک بگذارید و استفاده کنید و از روش JWT استفاده می کنیم. اگر از SharedPreferences یا flutter_secure_storage استفاده کنیم آیا باز هم نیاز به استفاده از روش jwt token (https://jwt.io) و تاریخ تولید یا انقضا توکن هست یا نه؟
    ممنون میشم راهنماییم کنید. با تشکر.

    • سلام همونطور که گفته شد Shared Prefences اطلاعات بدون رمزنگاری ذخیره میشه و به راحتی کاربر قابلیت دسترسی به آن را داره به همین دلیل کلیدها و اطلاعات حساس تر بهتره که بصورت clear text ذخیره نشود. در روش jwt نیاز به ذخیره سازی توکن در برنامه دارید.

Recent Posts

گیتهاب اکشن چیست؟ آموزش استفاده از گیتهاب اکشن در برنامه نویسی فلاتر

گیتهاب اکشن GitHub Actions یکی از ابزارهای گیتهاب است که به شما کمک می‌کنه تا…

2 هفته ago

آموزش افزایش سرعت اجرای وب اپلیکیشن های فلاتر

اگر یک برنامه نویس فلاتر هستید و با از نسخه وب اپلیکیشن پروژتون استفاده میکنید…

1 ماه ago

آموزش جامع انتشار اپلیکیشن اندروید و فلاتر در فروشگاه گوگل پلی Google play

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

2 ماه ago

دانلود سورس کد رابط کاربری اپلیکیشن فلاتر پروژه پادکست

طراحی رابط کاربری اپلیکیشن پادکست خود را با استفاده از این کیت توسعه UI/UX فلاتر…

3 ماه ago

فایربیس چیست؟ معرفی سرویس ابری Firebase و کاربردهای آن

فایربیس، پلتفرمی قدرتمند از شرکت گوگل برای توسعه و مدیریت برنامه‌های موبایل و وب است.…

3 ماه ago

آموزش پیاده سازی Method Channel در فلاتر + فیلم

فلاتر یک فریم ورک برنامه نویسی چندسکویی است که این امکان را برای برنامه نویس…

3 ماه ago