Android安全问题主要有:终端漏洞、应用重打包、应用仿冒
终端漏洞
- 组件安全:四大组件 + WebView
Activity:Activity 权限为 public,Intent 携带敏感信息,android:exported="true",Activity 被劫持
被劫持解决方案:
禁止截屏
在登录等 Activity 的 onPause 方法中判断前台的Activity是否属于本应用或者系统应用,若有风险,则提示用户,并覆盖上正常的 Activity
Service:
Service 权限为 public,对接收到的数据不验证,不判断是否为内部应用调用
空指针导致拒绝服务,类型转换异常导致拒绝服务
BroadCastReceiver 和 Content Provider:
权限为 public
android:exported="true"
WebView:
远程执行漏洞,API 小于17时使用 addjavascriptinterface 导致的漏洞
钓鱼URL
- 传输安全、网络安全
短信校验:
应在服务端校验
加密,密钥存储问题:
代码层应把密钥生成规则放隐秘些
密钥生成应根据用户 ID 和手机信息生成
第三方安全
代码混淆、加固
键盘攻击:
输入数据监听
键盘截屏监听
输入数据篡改
键盘攻击解决方案:
自绘键盘
对输入、存储、换算进行加密
使用第三方加固软键盘
外部调用APP
URL检验,Intent参数检验
应用重打包
防止二次打包:
代码、NDK 签名校验
热修复DEX文件校验
安全问题的预防技巧
反调试
反注入
物联网模块安全(如:蓝牙安全)
混淆日志
签名校验
android:allowBackup="false"
APP完整性校验
权限问题
常见的免费安全监测平台
360显微镜
腾讯金刚
爱加密
网易云盾