1、使用 PendingIntent 时,禁止使用空 intent,同时禁止使用隐式 Intent
2、】将 android:allowbackup 属性设置为 false,防止 adb backup 导出数据
3、在实现的 HostnameVerifier 子类中,需要使用 verify 函数效验服务器主机
名的合法性,否则会导致恶意程序利用中间人攻击绕过主机名效验
4、利用 X509TrustManager 子类中的 checkServerTrusted 函数效验服务器端
证书的合法性
5、META-INF 目录中不能包含如.apk,.odex,.so 等敏感文件,该文件夹没有经
过签名,容易被恶意替换
6、Receiver/Provider 不能在毫无权限控制的情况下,将 android:export 设置
为 true
7、数据存储在 Sqlite 或者轻量级存储需要对数据进行加密,取出来的时候进
行解密。
8、阻止 webview 通过 file:schema 方式访问本地敏感数据
9、不要广播敏感信息,只能在本应用使用 LocalBroadcast,避免被别的应用
收到,或者 setPackage 做限制
10、应用发布前确保 android:debuggable 属性设置为 false。
11、使用 Intent Scheme URL 需要做过滤
12、密钥加密存储或者经过变形处理后用于加解密运算,切勿硬编码到代码中
13、除非 min API level >=17,请注意 addJavascriptInterface 的使用
14、Android APP 在 HTTPS 通信中,验证策略需要改成严格模式。说明:Android
APP 在 HTTPS 通信中,使用 ALLOW_ALL_HOSTNAME_VERIFIER,表示允许和
所有的 HOST 建立 SSL 通信,这会存在中间人攻击的风险,最终导致敏感信息可能
会被劫持,以及其他形式的攻击。
15、Android5.0 以后安全性要求 较高的应用 应该使 用 window.setFlag
(LayoutParam.FLAG_SECURE) 禁止录屏
16、开放的 activity/service/receiver 等需要对传入的 intent 做合法性校验
17、Android WebView 组件加载网页发生证书认证错误时,采用默认的处理方法
handler.cancel(),停止加载问题页面。