大家好,今天给大家分享一下如何进行接口参数的隐私校验。 背景:应国家工信部要求,用户使用APP时,接口请求中禁止携带明文的Imei、AndroidID等敏感信息,需要测试部针对Apk进行接口的全面检查,遍历所有接口判断是否包含隐私信息。 刚看到这个需求时,很苦恼,思考后总结了两个阻碍测试的困难: 1、接口触发后,如何校验接口中有无携带敏感信息? 2、APP功能很多很多,接口300+,如何保障所有的请求都能遍历到而没有遗漏? 困难二至今还没有找到最佳方案,本文主要解决第一个困难。 经过沟通,思考,得出以下三个方案: 方案一、fiddler查询: 1、连接fiddler代理后,遍历所有APP功能; 2、测试完成后,在fiddler界面通过ctrl+F进行imei、android_id的查询,如果结果存在黄色背景,则说明该接口存在明文的敏感信息。
缺点:
方案二、服务器过滤: 1、搭建测试服务器,手机代理到测试服务器; 2、配置server,将指定端口接收的请求按照原有域名转发,同时通过lua脚本进行header+body的分析,判断其中是否包含该手机的imei和android_id,若存在则打印log警告。 缺点:
方案三、fiddlerscript配置log+文件输出: 1、在fiddlerscript的beforerequest中配置,增加判断:
缺点:
对比发现,第三种方案最优,分析原因如下: 方案三优点:
测试过程中遇到的异常: 最初配置代码如下:
运行代码,进行app操作,瞬间几十个fiddler异常弹窗刷出。。。
进行逐行调试后发现问题出在打开log.txt文件的时候会报错,结合请求数量猜测,应该是请求刷出的速度太快,第一条请求打开了log.txt文件,在close未执行的时候第二条请求就又申请打开log.txt文件,因此出现权限错误异常。 将打开文件的代码放在判断条件后,可以有效的规避该问题:
以上,希望能给大家带来帮助。