安装包签名【高危】
使用JDK中的jarsigner.exe检查安装包的签名。不安全。没有jar签名
解决办法:在android应用打包时同时采用V1 V2 签名
组件导出安全【低危待确认】
导出组件没有进行严格的访问控制,那么其它APP就可以通过调用这个导出组件的接口来访问原本没有声明权限的功能,
构成本地权限提升。
解决办法:避免不必要的组件导出。如果组件需要使用<intent-filter>,但不需要导出,
设置如下参数“android:exported="false"”。
输入记录保护【低危】
和PC端常见的木马类似,恶意程序可以对用户输入的敏感信息(主要是密码)进行窃听。
解决办法:采用自定义键盘
主要参考了以下开源项目
https://github.com/onlyloveyd/LazyKeyboard
密码复杂度策略【中危】
如果系统缺少密码复杂度策略,攻击者将有机会通过暴力猜测、撞库等方式获取一些安全意识淡薄的合法用户的认证凭据。
解决办法:在用户进行修改密码操作时进行密码复杂度校验,用户密码必须为大写字母、小写字母、数字、特殊符号中的3种
认证失败锁定策略【中危】
如果系统不存在认证失败锁定策略,攻击者将有机会对认证凭据进行暴力猜测。
解决办法:后台增加认证失败多次锁定功能,app前端进行相应的提示,并且增加图形验证码功能进行反robot操作
单点登录限制策略【低危】
如果系统允许同一个用户同时在多个会话中登录,那么用户就很难察觉到自身的账号已经被盗。
解决办法:当账号在其他地方登录时让原来的token失效,原来登陆的账号再进行app端操作时会有相应的提示并强制用户进行
重新登录
会话超时策略【中危】
对于认证会话不会超时的APP,如果用户在使用过程中将设备放置一旁并遗忘,
攻击者将有可能通过物理接触的方式以用户身份进行操作。
解决办法: 长时间不操作后token'会自动失效,当用户再进行app端操作时会有相应的提示并强制用户进行重新登录
UI敏感信息安全【中危】
视具体的泄露信息而定,敏感信息泄露可能会方便恶意程序窃取凭据,或者泄露一些原本不希望被用户看到的内容。
解决办法:对手机号等敏感信息采用加*脱敏处理
密码弱加密且存在暴力破解风险【高危】
密码为MD5加密,可使用MD5密码字典进行爆破
解决办法:对密码进行md5 加盐处理,采用双层md5加密+16位随机数的方式处理