在自动化测试中经常会遇到的一个痛点就是,报文传输加密.
有一些系统,从安全的角度考虑,后端是无法解析明文的,必须收到的是密文然后解密,才能做下一步操作.
在测试环境,有些后端改个参数,可以实现接收明文,但是也有一些系统,必须修改大量代码,才能实现接收明文的效果,而做自动化测试的一个原则之一便是 尽量不要因为做自动化而让开发修改代码
.
今天以我司手机银行app为例, 讲解报文加密问题解决的方法.
加密类型分析
一般手机银行的APP加密可以分为: 登录密码加密, 报文传输加密, 支付密码加密.
-
登录密码加密
登录密码一般都是调用国密插件加密,我们无法模拟.
解决方式是从日志里捞加密后的密码密文,直接重复使用密码密文. 对GM加密莫式管用, G1加密模式不管用.
模拟登录的最终目的是为了拿Cookie. 如果无法模拟登陆,那就人工登录, 抓报文,获取Cookie,在后续接口调用中使用. 并且要项目组在测试环境延长Cookie有效期. -
报文传输加密
如果服务端不能直接接收明文,那就只能模拟项目组的客户端加密代码,由我们自己写代码实现,并部署在内网服务器. 自动化平台发送报文给我们的加密服务器,加密后转发给app后端服务器 -
支付密码加密
支付密码也是调国密控件直接加密.测试环境默认支付密码都一样,可以从日志里捞加密后的密码密文,我们直接重复使用密码密文.
登录密码
接口自动化中,用户之所以需要登录app,是为了拿到Cookie方便后续接口使用. 那么在登录密码调用安全控件无法模拟的情况下,可以直接写个配置单,给后续接口调用.