1. AndroidManifest

AndroidManifest中的android:allowBackup属性,默认为true,如无特殊情况,可以改为false,防止数据被备份。

官方文档 安全说明

2. 防截屏

在登录和注册,或修改密码等敏感数据操作时,如果手机中有后台默认隐藏截屏的应用,在输入是一直截屏,就有可能盗取敏感数据信息。

解决方案:

在Activity onCreate 中加入:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);

3. 本地数据加密

开发过程中少不了通过 android.content.SharedPreferences 进行一些数据和变量存储,但是这些数据很容易被读取到,所以需要应对数据进行加密处理。

解决方案:

  1. 自己进行数据加密。

  2. 通过第三方进行加密,在此推荐:Hawk

4. 隐藏日志

如果开发项目搭建之初就对项目整体考虑周到了,我觉得这点应该不用,但是如果项目框架搭建之初没进行此方面的考虑,就得自行处理了,具体方案如下:

先在当前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的所有日志。

5. 混淆

先在当前Module下的build.gradle中的buildTypes方法中修改代码至如下(之前自己的配置代码不变):

buildTypes {
    release {
        minifyEnabled true
    }
}

然后再在proguard-rules.pro文件中加入引用的jar、library等进行排除操作。

在此推荐一个Android Studio插件,免去自己一个一个添加的麻烦:AndroidProguardPlugin 一键生成项目混淆代码插件(此插件还在继续完善中,如有没有添加的库,可以直接联系插件开发者进行添加)

以上是总结的一些安全方面的方案,希望有用,当然,代码方面还可以进行项目加壳处理,进一步进行安全保护,具体加壳可以利用一些第三方平台等,这里不一一列举,自行Baidu,Google。

by anonymous (感谢赵同学整理)

03-05 20:35