网站首页 > 文章精选 正文
我们日常的接口测试工作主要是验证接口的功能性(入参、出参、边界值等),沐沐在接口测试过程中遇到的一些接口安全性的问题,整理成了通用的测试点,不一定适用于全部的产品,仅做参考。
一、登录接口校验
验证登录接口中密码是否密文传输
这个测试点听起来很荒唐,应该大家都知道密码应该加密,但是在很多时候,研发人员为了赶工就会忽略这个点,所以建议大家测试登录功能的时候,一定要F12查看一下登录接口中密码是否是密文。
验证登录接口是否可以爆破登录
对于一些安全性较高的系统,测试的时候有必要验证一下是否可以爆破登录,可以使用Burpsuit进行爆破登录测试。当然现在很多系统都是用手机号码进行动态登录,如果还是常规的账户和密码登录,就一定要对安全性提出质疑了,密码强度符合等保要求么?验证码要不要加上去?
二、接口规则校验
验证接口类型是否合理
理论上来说,除了查询接口使用GET,其余的接口都应该使用POST,这样接口的安全性更高。沐沐以往的接口测试过程中确实遇到了不少业务接口使用get,参数拼接在url上及其不安全。此外,还有一个特殊情况,即不需要用户登录的系统,查询类的接口也不建议使用GET,在安全扫描中会出现跨站点请求伪造的问题。
验证新增和修改接口是否是独立的接口
这个测试点有点离谱了,沐沐在测试过程中发现新增和修改接口共用同一个,这样似乎是没有什么问题,但是后期遇到了一些复杂的业务逻辑,新增和修改接口融合在一起,导致了生产数据被篡改。所以接口设计还是要严谨一点,新增和修改接口尽量是独立的接口。
验证POST接口中是否将参数拼接成URL
沐沐曾经还遇到过将post接口的参数拼接到了url上,如果数据量较大的时候,url字符长度太大接口就会报错,可能此类情况并不常见,但是遇到过就记录下来了。
三、接口越权校验
接口的越权分为水平越权和垂直越权,我们可以通过Burpsuit、Appcan等工具进行越权测试,测试过程中也遇到了以下问题:
验证接口url上是否区域编码、身份证号等参数;
验证接口url上存在true或false时,进行篡改,功能、数据是否越权;
验证接口url上存在type=1或2时,进行篡改,功能、数据是否越权;
接口参数中存在pagesize或者size时,进行篡改,是否进行最大值限制;
接口body参数中存在身份证号码时,篡改参数值,接口是否返回正确提示。
最后:
1)关注+私信回复:“测试”,可以免费领取一份10G软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Mysql数据库、抓包工具、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试等。
2)关注+私信回复:"入群" 就可以邀请你进入软件测试群学习交流~~
猜你喜欢
- 2025-08-03 从小厂到腾讯T2.3OFFER,我所整理的面试题(含答案)
- 2025-08-03 前端最新面试题及答案 (2025)
- 2025-08-03 测试进阶:实现跨请求地保持登录的神器session你get了么?
- 2025-08-03 httprunner实战接口测试笔记,拿走不谢
- 2025-08-03 5分钟面试速记 - SpringCloud高频面试题+一句话答案
- 2025-08-03 一文掌握:5大自动化测试难题及高效解决方案
- 2025-08-03 面试题系列:接口与抽象类的区别
- 2025-08-03 面试滴滴科技,被按在地上摩擦,鬼知道我经历了什么?
- 2025-08-03 基于docker部署实现接口自动化持续集成
- 2025-08-03 SSM面试题总结(含答案)
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)
- fmt.println (52)