Postman 工具介绍
Postman 是一款商业化软件,在 API 的研发管理中被广泛使用于 API 设计、API 构建、API 测试等工作环节。当然,它也同样适用于 API 安全测试和管理。
Postman 是由 Postman 公司开发的界面友好的 API 开发协作软件,不同的使用者通过简单的配置即可开展工作,并且其具备的自动化集成、批量操作、脚本定制等功能,使得其在 API 软件市场占有很大的比重。
其功能特点主要如下。
多平台的客户端支持,读者可以从其官网下载 macOS、Windows(32 位/64 位)、Linux(32 位/64 位)不同平台的客户端软件,通过简单的安装即可使用。目前,Postman 提供免费版和企业版两种版本,大多数情况下,免费版即可满足读者的日常使用。
方便的自动化集成,Postman 支持命令行调用和 API 调用的方式,与 CI/CD 管道工具进行集成。比如在 CI 中安装 Newman 工具,即可以调用本地或服务器端的 API 集合。
丰富的管理功能,Postman 提供个人空间管理、团队协作 API 管理、SAAS 服务与 SSO 集成管理等,加上其完善的在线文档,为用户的使用提供了极大的帮助。
友好的脚本定制,Postman 支持多种形式的脚本定制功能,比如 pre-request 脚本、多语言编码,这些功能为不同场景下的 API 测试提供了批量操作、自动化操作的入口。
在理解 Postman 的工作原理之前,先来了解一些基本的概念,这样便于更好的理解 Postman 安全测试的过程。
Collections(集合):集合是 Postman 采用分组的方式,将一组相似的 API 请求归类,但每一个 API 请求可以设置相应的 header、body、URL 参数、授权方式及配置。
Runner(运行器):Runner 是 Postman 特有的模块,当读者使用 Runner 时,其实是执行集合中的每一个 API 请求。Runner 充当管理者的角色,对所有的 API 请求进行调度、编排,达到流程化的目的。
Variables(变量):Postman 中的变量和软件开发中变量类似,它也有不同的作用域,比如全局变量、集合变量、环境变量、本地变量等,这些变量的值,读者可以采用程序编码的方式,通过读取 URL 参数、HTTP 请求、本地文件等操作进行赋值。
Environments(环境):Postman 中的环境是指 API 请求的上下文,通常以键值对的方式存储数据。
Pre-Request Script(预请求脚本):预请求脚本主要用于设置 API 请求中的数据、变量,比如通过预请求脚本可以获取 Environments 中的数据,设置各种 Variables 变量值。
Test Script(测试脚本):测试脚本在从服务器收到 Response 后才开始执行,其主要用来设置变量值、判断响应是否符合预期。比如检查 Response 的 body 中是否包含 payload 返回的字符串、HTTP 状态码,HTTP Header 是否包含关键字等。
当 Postman 以 Runner 方式运行后,首先从预定义的集合中获取 API 列表,按照 Runner 编排的顺序(如果没有编排,则默认顺序)分别发起 API 请求。在请求发起前,加载预请求脚本。预请求脚本中,通过编码的方式,获取全局变量、集合变量、环境变量、本地变量等变量值进行赋值,再发送请求到服务器端。
服务器端接受请求,反馈应答响应。Postman 接收到响应报文后,调用测试脚本,验证响应的准确性,并给出结果判断,最终形成报告。
Postman 主要以功能测试为主,安全人员之所以使用它进行安全测试,是因为它支持 REST API、SOAP API、GraphQL 等多种 API 协议,并集成了 API KEY、HTTP Basic、Digest、OAuth 多种认证形式,使用它来做安全测试可以帮忙安全人员解决很多其他工具软件无法解决的问题。
但因为 Postman 的主要功能不是做安全测试,所以需要在理解 Postman 使用方式的基础上,将常用的安全攻击手法融入其中,才能达到安全测试的效果。例如,最常见的用户和口令暴力破解场景,安全人员需要自己准备攻击向量或字典,再使用其提供的 Runner collections 方式,设置字典值 payload,进行安全测试验证。字典的选择可以使用 FuzzDB 中的 wordlists-user-passwd,然后再使用 Postman 的 Runner 进行 Fuzz 测试。
也可以通过 Postman 支持代理的方式,将 Postman 与 Burp Suite 联合使用,这样就可以省略动手编写脚本获取参数的步骤,将 payload 的设置在 Burp Suite 中来做。
版权声明: 本文为 InfoQ 作者【阿泽🧸】的原创文章。
原文链接:【http://xie.infoq.cn/article/fb4400b2ed70d501d9b7f6eba】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论