声明:本文是个人笔记,参考了网络上许多文章,难以列出各个链接,如有作者看到,还请在评价中告知,我会在文章末尾注明,谢谢
1、在登录页或用户隐私输入等关键Activity的OnPause方法中检测最前端Activity应用是否自身或系统应用(如果不是,说明可能正在被监听),如发现风险,给出用户一些警示信息。
2、防止截屏(比如用户隐私信息输入界面)
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
3、用户隐私
*检查是否在本地保存用户名密码,无论加密与否
*检查敏感的隐私信息,如聊天记录、关系链、银行账号是否加密
*检查是否将系统文件、配置文件明文保存在外部设备上
*部分需要存储到外部设备的信息、需每次使用前判断信息是否被篡改
4、文件权限
*检查APP所在的目录,其权限必须为不允许其他组成员读写
5、网络通讯
*检查敏感信息在网络传输中是否做了加密处理,重要数据要采用TLS或SSL
6、运行时解释保护
*对于嵌有解释器的软件,检查是否存在XSS、SQL注入漏洞
*使用webview的APP,检查是否存在URL欺骗漏洞
7、Android组件权限保护
*禁止APP内部组件被任意第三方程序调用
*若需要供外部调用的组件,应检查对调用是否做了签名限制
8、升级
*检查是否对升级包的完整性、合法性进行了校验,避免升级包被劫持
9、三方库
*如果使用了第三方库,需要跟进第三方库的更新
10、网络代理监测
如果手机设置了代理,容易被抓包。可以采用证书绑定技术,校验服务端的证书是否被代理给替换。(参考文章:http://www.wisedream.net/2017/03/17/cryption/crack-https/)