在由机械工业出版社发行的《API安全技术与实战》一书中如果时间充分的话关于API渗透测试的内容个人觉得还可以更丰满一些。近期,在国外网站看到一篇不错的文章,转译过来供大家学习参考。
在过去的一些年里API 不像现在那么普遍,这是由于单页应用程序 (SPA) 流行的结果。10 年前,Web 应用程序倾向于遵循单一模式,即大多数应用程序在呈现给用户之前在服务器端生成。任何需要的数据都将由系统生成 UI 的同一台服务器直接从数据库中收集。它的形式看起来像这样:
图:10年前的Web应用模型
现代 Web 应用程序通常是与SPA(单页应用程序)不同的模型。在这个模型中,通常由一个 API 后端、一个 JavaScript UI 和数据库构成。API 只是作为 web 应用程序和数据库之间的接口,对 API 的所有请求都是直接从 Web 浏览器发出的。
图表:现代 Web 应用程序模型
相对SPA形式,现代Web应用程序模型是一个更好的解决方案,因为它更容易扩展并允许更专业的开发人员为项目工作,即前端开发人员只关注前端工作,而后端开发人员则在 API 上工作。这些应用程序也往往感觉更快速,因为不是每个请求都需要页面加载。
然而,同一页面的不同组件也会神奇地刷新,会给使用者一种与原生应用程序类似的感觉。这也使得这种模型也变得越来越流行,因为大量不同的前端 JavaScript 框架(React、Vue 和 Angular 等)已经出现。
这就是说——现代应用程序到处都有 API,所以我们应该学习如何破解和保护它们。
API测试配置
Postman 是一个方便进行 API 安全测试的应用程序。你可以从其官方网站下载 Postman 。 本质上,Postman 只是另一个 HTTP 客户端,可用于轻松修改并向 API 发送请求。
如果你的文件中有一组 API 请求,可以通过单击应用程序左上角的“导入”按钮将它们导入 Postman :
导入集合后,你将看到 Postman 中加载的 API 调用,如下所示:
通过单击单个 API 调用,将在右侧看到完整的 API 请求。同时,请求的不同部分将被分解为Params、Authorization、Headers、RequestBody等部分,这将帮助你轻松地处理每个部分。
你可以像在 BurpSuite 中一样修改请求标头和正文,分析对测试用例的响应,你只需点击右上角的发送按钮即可。
Postman 中的响应视图看起来像这样,响应也分为不同的部分,如正文、Cookie、标题等,你可以仔细分析每个部分。
由于 Postman 专门用于 API,因此有许多内置选项来测试 API 主要存在的功能。例如,通过单击请求方法旁边的下拉箭头,你可以看到大量不同的请求动词以进行测试:
对于 GET 请求,你可以通过Params选项卡添加/删除以及编辑参数。当你选中/取消选中参数时,你可以看到它们相应地出现在 URI 字段中。
在添加授权值时,Postman 为你提供了多种选项供你选择,你可以根据目标 API 处理授权的方式选择一个。
你还可以按照以下步骤将授权值添加到整个集合或子集合:
- 单击集合/子集合名称旁边的三个点,然后选择“编辑”选项
- 转到“授权”选项卡,选择身份验证类型并添加其值。