一、失效的对象级别授权

eg:获取订单内容时, GET ${host}:${port}/order.html ?id=578298
测试:通过遍历 id的值,测试能不能越权获取其他人的订单?

二、失效的用户身份验证

eg: 没有校验令牌有效性
测试:使用失效的token处理业务,查看是否成功
eg: 变更密码的接口
测试:对于没有控制变更次数的接口,进行暴力破解

三、数据暴露

eg: 传输未加密的个人信息,身份证、手机号、密码等
测试:对于接口中涉及隐私信息的数据,验证是否加密或者脱敏

四、资源缺乏和速率限制

eg: 资源和计算能力受限于环境的因素存在着上限,而用户请求没有上限值。如果某个用户发送大量请求占用了该API,那么其他用户访问时,可能就得不到想要的结果。
测试:如下代码块,限制匿名用户速率:每小时200次访问;实名注册用户速率:每小时5000次访问。
在接口测试时,对于关键业务接口可以使用jmeter模拟该场景,测试应用是否有应对洪水攻击的方法。
注:速率限制应该是一个配置项,否则后期的性能测试会比较麻烦。

  1. DEFAULT_THROTTLE_RATES:{
  2. "anon": config(THROTTLE_ANON, default=200/hour),
  3. "user": config(THROTTLE_USER, default=5000/hour)
  4. }

五、批量分配

eg: 更新后端提供的属性以外的更新,比如姓名、年龄、余额…,前面两个属性前端可以更新的,后面的余额是程序去更新的。在信息变更的接口,添加余额参数去更新。对于ORM映射没有判断的来说,就可以直接修改余额、积分…等一张表的数据。