美文网首页
Android安全注意事项

Android安全注意事项

作者: 溜肉段儿 | 来源:发表于2019-04-23 18:00 被阅读0次

代码保护

classes.dex文件加密保护

在编译阶段,配置 Proguard,对敏感函数进行混淆。

Dalvik 反调试检测

攻击者可以通过动态调试的方法,对 App 进行逆向、 跟踪等。同时,攻击者还可以利用调试技术,在运行时的 App 内存中注入恶意代码,达到截获运行时数据 的目的,此举可能导致用户的隐私信息被窃取

Native 反调试检测

Native 代码注入检测

Native 库(.so 文件)加密保护

SO 中包含了编译后的机器码,由于没有对 该文件进行加密,使用工具可以将字节码还原成类 C 代码

自身签名完整性校验

Android 系统使用 JAR 包的签名机制对 APK 进行完整性保护,确保 APK 在不安全的网络传输时的完整性 得到保护。但 Android 系统没有对数字签名的颁发者进行管理,任何人都可以生成数字签名,并使用该签 名对 APK 包进行重新签名。如果 App 本身不对自身的签名来源进行有效的完整性检查,攻击者可以篡改 应用(插入恶意代码、木马、后门、广告等),重新签名并且二次发布,导致应用程序完整性被破坏。

自身文件完整性校验

APK 文件的格式为 zip 包,任 何人均可通过解压的方式获取其内部文件。如果不对内部文件进行完整性校验,攻击者可能会对 APK 包 中的资源文件、代码文件进行篡改(插入恶意代码、木马、后门、广告等),重新签名并且发布,并使用 钓鱼的方式对终端用户进行攻击。


数据传输保护

X509TrustManager 未正确校验 SSL 证书链

使用https情况下,实现checkServerTrusted()校验证书,证书不匹配抛出CertificateException异常。


应用安全规范

允许备份标记没有设置为关闭

未将备份属性 android:allowBackup 配置为 false,将允许外部程序任意备份 App 私有数据。

设置 AndroidManifest.xml 文件中设置 application 节点的 android:allowBackup 属性为 false。

允许 WebView 访问本地任意脚本

Android 使用 Webview 时可以使用 setAllowFileAccess(boolean allow)方法禁用或允许 webview 加载本地 文件,webview 默认是允许加载本地文件的,如果没有对需要加载的脚本做校验,Webview 将加载任意本 地脚本,攻击者可使之加载恶意代码导致用户数据泄露等安全风险。

setAllowFileAccess(boolean allow)方法只是禁用或允许 webview 对文件系统的访问, Assets 和 resources 资源任然可以使用 file:///android_asset 和 file:///android_res 访问。

对需要加载的文件做白名单校验,防止攻击者对脚本进行篡改后添加到脚本中的恶意代码危害到 客户端安全。

调试日志输出敏感信息

在开发阶段不使用 Android 系统自带的 Log 输出,而是使用另外一个类对 Log 进行包装。该类使用 全局变量控制是否输出调试信息,在应用实际发布的时候,对所有的调试输出统一进行关闭。

通过合理配置 ProGuard,在编译期移除调试输出的代码,proguard-rules.pro 的配置如下:

必须注释掉-dontoptimize

移除所有 android.util.Log 相关的代码

-assumenosideeffects class android.util.Log { public static int v(...);

public static int i(...);

public static int w(...);

public static int d(...);

public static int e(...); }

Activity 进行防止截屏处理

在 Activity 中添加防止截屏的选项,在 Activity 的 onCreate()中配置: getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE)

运行环境安全性检查

在 App 添加检测运行环境的代码或者 SDK,在不安全的环境(Root、模拟器等)中对用户做出提示,禁止某些敏感 功能运行。

相关文章

网友评论

      本文标题:Android安全注意事项

      本文链接:https://www.haomeiwen.com/subject/gujbgqtx.html