最近由于项目需求需要做 API 测试,所以这里简单记录一下,如果其他朋友也要用到可以做一个参考。
什么是 API 测试?
API测试用于测试API收到合理参数,被调用后是否能够以预期的格式返回正确的结果。在测试中尤其需要关注API对服务虚拟化是否能够作出适当的处理:比如对一个不合理的输入抛出合适错误、对极端的输入也能够在可以接受的响应时间内给出正确应答或是能够妥善应对潜在安全攻击(如XSS攻击)。
API 测试包括直接针对 API 本身进行的测试和将API置于实际应用环境,将API与其服务的用户逻辑一同进行集成测试两种。
此类测试包括针对表现层状态转换(SOAP)应用程序接口、Web服务,企业服务总线、数据库、大型机、网页(及其UI),以及企业资源计划等相关系统的测试。
API 测试工具
目前比较流行的 API 测试工具有:
- Postman
- SoapUI
- Katalon Studio
由于 Postman 支持 Linux、macOS、Windows 多平台,所以我下载了 Postman 来进行测试。
Postman 下载地址:
https://www.postman.com/downloads/
Postman 使用方法
如果你比较熟悉 burpsuite
的话,Postman
应该很好上手。
Postman 左侧展示请求记录,右侧是一个「浏览器」,你可以通过不同的 HTTP Method 发送请求,并且可以非常方便的修改包括 Params(参数)、Authorization(认证)、Header(头部字段)、Body、Pre-request(JS 脚本)等在内的数据。
自动化 API 测试
这里要特别指出的是,Postman(Free edition)只是一个让你方便的构造 API 请求的工具,本身并不提供 API 漏洞检测的功能,那么 API 测试方法有两种:
- Postman 手工测试
- Postman 搭配 Burpsuite 等工具进行自动化检测
因为 Postman 本质上就是一个浏览器,所以也可以通过配置代理将请求数据发送到 Burpsuite,然后通过 Burpsuite 的扫描模块进行自动化检测。
如果每个 API 请求中都包含一个一次性生成的 access_token
、signature
之类的字段,那么可以通过 Postman 的 Pre-request 模块中 JS 编程的动态生成,也可以通过 Burpsuite 搭配格外的脚本来生成。
如何发送 Json 格式的请求?
有些接口只接受 Json 格式的数据,这时候我们需要调整 Postman 配置来发送 Json 格式的请求。
- 选择
Post
请求方式,同时将 header 的 content-type 设置为 application/json(如果没有就自行添加):
2. Body 选择 raw 格式,右侧选择 JSON:
3. 接下来就可以直接写 Json 格式的数据了:
由于项目保密相关,这里就不记录 API 测试实际分析的过程了,今天就简单记录到这里,如果你觉得文章还不错的话可以关注我或者我的专栏,会定期分享一下安全类的技术文章。