برنامه نویس ارشد موبایل
توسعه دهنده ReactNative هستید ؟obfuscate رو فراموش نکنید
زمانی که ما یک اپلیکیشن React Native رو می سازیم ٬کد های جاوای ما تو فایلی با فرمت dex کامپال میشه .این فرمت قابل فهم برای من و شما نیست اما بگونه ای طراحی شده است که قابل فهم برای دی کامپایلر ها باشد.به هر حال میدانیم جلو دی کامپایل شدن فایل های جاوا را نمیشه گرفت ولی میشه کاری کرد که این کار سخت تر بشه.برای سخت تر کردن کار پیشنهاد Android استفاده از فایل ProGuard که یکسری تنظیمات رو در قالب کد های کوتاه میشه در اون انجام داد .و حتی میتوان با تنظیمات ProGuard از قسمت های بلا استفاده برنامه خلاص شد و اندازه برنامه را بهینه تر کرد.
همیشه امنیت رو باید برای اپلیکیشن های موبایل در نظر داشت . در React Native که بعضا ممکن است از کتابخانه های Native هم استفاده کنیم استفاده از این روش خالی از لطف نیست.
چگونه کد اندروید خودم رو obfuscate کنم ؟
تکه کد زیر را در فایل
[app_name]/android/app/build.gradle
def enableProguardInReleaseBuilds = true
android {
// other config omitted for brevity
buildTypes {
release {
debuggable false
shrinkResources enableProguardInReleaseBuilds
zipAlignEnabled enableProguardInReleaseBuilds
minifyEnabled enableProguardInReleaseBuilds
useProguard enableProguardInReleaseBuilds setProguardFiles([getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'])
}
}
}
اضافه کنید.
در مرحله دوم باید خط های زیر رو در فایل
[app_name]/android/app/proguard-rules.pro
به صورت زیر کامنت کنید.
# Disabling obfuscation is useful if you collect stack traces from production crashes
# (unless you are using a system that supports de-obfuscate the stack traces).
# -dontobfuscate
یک نکته بسیار مهم که برای React Native خود گیت هاب ری اکت نیتیو یک فایل نمونه از Progurd داره که پیشنهاد میکنم حتما از اون استفاده کنید . من لینکش پایین می ذارم براتون :
پیشنهاد دوم اینکه این کار رو هم برای حالت debug هم در گریدلتون انجام بدید چون ممکنه یکسری خطا ها رو دریافت کنید اینجوری بهتر میتونید حلش کنید.
چگونه چک کنیم که ایا کد من obfuscated شده یا نه ؟
شما به راحتی میتوانید توسط ابزار Apk آنالیز این کار را انجام دهید در خود Android Studio
- به مسیر زیر برید و روی apk.* کلیک کنید
[app_name]/android/app/builds/outputs/apk
- فایل classes.dex رو پیدا کنید و روش کلیک کنید
فایل classes.dex رو بازرسی کنید . اگر همه یا بخشی از کلاس ها و یا توابع نامشون به شکل زیر تغییر کرده پس فرایند obfuscated به درستی پیش رفته
اخطار امنیتی
دیکامپایل کردن کد اپلیکیشن اندروید شما ممکن است باعث لو رفتن کامل معماری سیتم شما شود . هرچند امنیت سمت بک اند از احمیت بیشتری برخوردار است اما سمت کلاینت یکی از کار های امنیتی که برای اپلیکیشن های اندروید میتوانید انجام دهید همین فرایند obfuscated می باشد .
مطلبی دیگر از این انتشارات
ورود به دنیای برنامه نویسی.قسمت 1
مطلبی دیگر از این انتشارات
آموزش افزونه نویسی برای پایتون با زبان C
مطلبی دیگر از این انتشارات
پایتون با طعم فندق