在我的和公司开发的项目发布后,做为软件工程师最担忧的就是代码安全(虽然说现今而言,技术已没有什么秘密,聪明人不少,你的功能可能别人稍加研究就能不看代码也能实现(黑科技除外),但实现归实现,实现的方案,思路,性能这些是别人没法复制的)。
还有就是项目发布后项目中一些数据安全,等方面,都值得咱们考虑,思索。html
AndroidManifest中的android:allowBackup属性,默认为true,如无特殊状况,能够改成false,防止数据被备份。java
Android API Level
8及其以上Android系统提供了为应用程序数据的备份和恢复功能,此功能的开关决定于该应用程序中AndroidManifest.xml文件中的allowBackup属性值[1]
,其属性值默认是True。当allowBackup标志为true时,用户便可经过adb backup和adb
restore来进行对应用数据的备份和恢复,这可能会带来必定的安全风险。gitAndroid属性allowBackup安全风险源于adb backup允许任何一个可以打开USB
调试开关的人从Android手机中复制应用数据到外设,一旦应用数据被备份以后,全部应用数据均可被用户读取;adb
restore允许用户指定一个恢复的数据来源(即备份的应用数据)来恢复应用程序数据的建立。所以,当一个应用数据被备份以后,用户便可在其余Android手机或模拟器上安装同一个应用,以及经过恢复该备份的应用数据到该设备上,在该设备上打开该应用便可恢复到被备份的应用程序的状态。github尤为是通信录应用,一旦应用程序支持备份和恢复功能,攻击者便可经过adb backup和adb
restore进行恢复新安装的同一个应用来查看聊天记录等信息;对于支付金融类应用,攻击者可经过此来进行恶意支付、盗取存款等;所以为了安全起见,开发者务必将allowBackup标志值设置为false来关闭应用程序的备份和恢复功能,以避免形成信息泄露和财产损失。安全
在登陆和注册,或修改密码等敏感数据操做时,若是手机中有后台默认隐藏截屏的应用,在输入是一直截屏,就有可能盗取敏感数据信息。app
解决方案:框架
在Activity onCreate 中加入:ide
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
开发过程当中少不了经过 android.content.SharedPreferences 进行一些数据和变量存储,可是这些数据很容易被读取到,因此须要应对数据进行加密处理。性能
解决方案:
本身进行数据加密。
经过第三方进行加密,在此推荐:Hawk
若是开发项目搭建之初就对项目总体考虑周到了,我以为这点应该不用,可是若是项目框架搭建之初没进行此方面的考虑,就得自行处理了,具体方案以下:
先在当前Module下的build.gradle中的buildTypes方法中代码至以下(以前本身的配置代码不变):
buildTypes { release { buildConfigField "boolean", "LOG_DEBUG", "false" proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } }
而后在proguard-rules.pro文件中加入:
-assumenosideeffects class android.util.Log{ public static boolean isLoggable(java.lang.String, int); public static int v(...); public static int i(...); public static int w(...); public static int d(...); public static int e(...); }
至此,能够彻底隐藏android.util.Log的全部日志。
先在当前Module下的build.gradle中的buildTypes方法中修改代码至以下(以前本身的配置代码不变):
buildTypes { release { minifyEnabled true } }
而后再在proguard-rules.pro文件中加入引用的jar、library等进行排除操做。
在此推荐一个Android Studio插件,免去本身一个一个添加的麻烦:AndroidProguardPlugin 一键生成项目混淆代码插件(此插件还在继续完善中,若有没有添加的库,能够直接联系插件开发者进行添加)
以上是总结的一些安全方面的方案,但愿有用,固然,代码方面还能够进行项目加壳处理,进一步进行安全保护,具体加壳能够利用一些第三方平台等,这里不一一列举,自行Baidu,Google。
by anonymous (感谢赵同窗整理)