一. APP安全测试测试点概述
1.安装包测试
1.1关于反编译
目的保护公司知识产权和安全方面的考虑,程序员会在源码中编译一些敏感信息,如密码。一旦泄露安全隐患巨大。
为了避免这些问题,测试中,我们可以直接使用反编译工具(dex2.jar和jd-gui工具)查看源代码,判断研发是否对代码做了混淆,包含显而易见的敏感信息。
1.2关于签名
这点IOS不用考虑,因为APP Store会做校验。但Android没有此类权威检查,我们需要在发布前校验一下签名使用的key是否正确,以防被恶意第三方应用覆盖安装等。可使用“Jarsgner -verify -verbose -certs apk包路径”命令检查,若结果为“jar已验证”,说明签名校验成功。
1.3完整性校验
为确保安装包不会在测试完成最终交付过程中因为问题发生文件损坏,需要对安装包进行完整性校验,通常做法是检查文件的md5值,一般可以通过自动化做校验。
1.4权限设置检查
Android:直接检查manifest文件来读取应用所需要的全部权限,并结合需要进行验证此权限是否必须。manifest文件的修改也需要关注,增加新权限前也需要进行评估。
IOS:没有像android类似的manifest文件查看,IOS用户权限只有在用户使用到APP才弹出提示框,提示用户当前APP需要访问照片,声音,联系人等组件。
2.敏感信息测试
数据库是否存储敏感信息,某些应用会把cookie类数据保存在数据库中,一旦此数据被他人获取,可能造成用户账户被盗用等严重问题,测试中在跑完一个包含数据库操作的测试用例后,我们可以直接查看数据库里的数据,观察是否有敏感信息存储在内。一般来说这些敏感信息需要用户进行注销操作后删除。如果是cookie类数据,建议设置合理的过期时间。
日志是否存在敏感信息,一般开发在写程序的过程中会加入日志帮助高度,所有可能会写入一些敏感信息,通常APP的发布版不会使用日志,但也不排除特殊情况。
配置文件是否存在敏感信息,与日志类似,我们需要检查配置文件中是否包含敏感信息。