我们日常的接口测试工作主要是验证接口的功能性(入参、出参、边界值等),我在接口测试过程中遇到的一些接口安全性的问题,整理成了通用的测试点,不一定适用于全部的产品,仅做参考。
一、登录接口校验
(1) 验证登录接口中密码是否密文传输
这个测试点听起来很荒唐,应该大家都知道密码应该加密,但是在很多时候,研发人员为了赶工就会忽略这个点,所以建议大家测试登录功能的时候,一定要F12查看一下登录接口中密码是否是密文。
(2) 验证登录接口是否可以爆破登录
对于一些安全性较高的系统,测试的时候有必要验证一下是否可以爆破登录,可以使用Burpsuit进行爆破登录测试。当然现在很多系统都是用手机号码进行动态登录,如果还是常规的账户和密码登录,就一定要对安全性提出质疑了,密码强度符合等保要求么?验证码要不要加上去?
二、接口规则校验
(1) 验证接口类型是否合理
理论上来说,除了查询接口使用GET,其余的接口都应该使用POST,这样接口的安全性更高。沐沐以往的接口测试过程中确实遇到了不少业务接口使用get,参数拼接在url上及其不安全。此外,还有一个特殊情况,即不需要用户登录的系统,查询类的接口也不建议使用GET,在安全扫描中会出现跨站点请求伪造的问题。
(2) 验证新增和修改接口是否是独立的接口
这个测试点有点离谱了,沐沐在测试过程中发现新增和修改接口共用同一个,这样似乎是没有什么问题,但是后期遇到了一些复杂的业务逻辑,新增和修改接口融合在一起,导致了生产数据被篡改。所以接口设计还是要严谨一点,新增和修改接口尽量是独立的接口。
(3) 验证POST接口中是否将参数拼接成URL
沐沐曾经还遇到过将post接口的参数拼接到了url上,如果数据量较大的时候,url字符长度太大接口就会报错,可能此类情况并不常见,但是遇到过就记录下来了。
三、接口越权校验
接口的越权分为水平越权和垂直越权,我们可以通过Burpsuit、Appcan等工具进行越权测试,测试过程中也遇到了以下问题:
- 验证接口url上是否区域编码、身份证号等参数;
- 验证接口url上存在true或false时,进行篡改,功能、数据是否越权;
- 验证接口url上存在type=1或2时,进行篡改,功能、数据是否越权;
- 接口参数中存在pagesize或者size时,进行篡改,是否进行最大值限制;
- 接口body参数中存在身份证号码时,篡改参数值,接口是否返回正确提示。