欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

API 渗透测试从入门到精通系列文章(下)

来源:本站整理 作者:佚名 时间:2019-07-17 TAG: 我要投稿

在本系列文章的前面一部分我们从使用 Postman 开始,创建了集合和请求,并通过 Burp Suite 设置为了 Postman 的代理,这样我们就可以使用 Burp 的模糊测试和请求篡改的功能。 在接下来的这部分内容中,我们将深入研究一些稍微高级一点的 Postman 功能,这些功能你肯定会用到的。
集合变量

 
Postman 中的变量几乎可以用于请求中的任何字段。 语法是在它们的两边使用两层花括号。有几个地方我可以使用变量定义它们。 如果它们是静态的,也许我会将它们设置为集合变量。 例如,我一直使用 http://localhost:4000 作为我的测试主机。 如果我将测试 API 的端口从4000改为4001,我不希望一个个编辑每个请求的 URL。接下来我介绍一下我们该如何将它移动到一个集合变量中。首先,在菜单侧栏中打开"集合"列表中编辑该集合的对话框。 我可以单击… 按钮或者右键单击集合名称。这两种操作,我们会得到相同的上下文菜单,然后选择编辑(Edit)。
这将打开一个编辑集合的对话框。 默认视图包括集合的名称和描述的文本框,但是在这两个字段之间还有一行选项卡。
其中一个标签叫做变量(Variables)。这就是我们想要的,点击这个标签会打开另一个对话框,用于编辑变量。

  Postman 集合变量编辑界面
它有一个表格,其中包含某个变量的变量名称、 初始值列和 当前值列。 这两个值列之间的差异与 Postman 的付费功能进行同步有关。 在这里重要的一个点是,你将输入初始值,然后选项卡进入当前值字段。 这将自动将当前初始值填充到当前值字段中,并且它将如图所示。 现在我有了一个名为 API_host 的集合变量,其值为 http://localhost:4000。 在完成了变量的编辑之后需要点击更新按钮。
现在是时候修改我的请求,并引用该变量,而不是使用硬编码的主机名和端口。
 

Postman 中的请求,将 URL 更改为指向一个变量
我只是简单地用占位符替换了每个 URL 中对应的部分:  {{API_host}},把鼠标悬停在占位符上可以展开这个变量,会显示变量值和范围。 这里有一些颜色编码也可以帮助我们。 当变量有效时,文本会变成橙色,但是如果我输入一个无效的变量名,文本将变成红色。
我仍然需要对每个请求进行一次更新,让它们使用某个变量。 但是在将来,如果我改变了端口,或者如果我切换到了 HTTPS,或者如果我将我的测试 API 部署到一个完全不同的主机上; 那么我就可以回到集合变量那里并更新变量的值,我的所有请求都会相应地发生改变。
现在,集合变量对于相对静态的字段以及不会经常发生改变的字段是很适合的,但是如果我在一个多租户的解决方案中测试多个环境和部署,甚至多个租户呢? 我可能会使用相同的请求集合,但是使用不同的变量集合。 那么在这种情下环境变量就可以处理这个问题。
环境变量(Environment Variables)
你可能已经注意到了窗口右上角的界面。 让我们打开看看:
 

在 Postman 中的环境变量界面
1. 环境选择器下拉菜单。 可以选择一个环境。
2. 快速查看按钮,点击后可以查看你的环境中设置的内容。
3. 管理环境按钮,这里是真正进行编辑环境的地方。
首先,我们需要点击管理环境按钮。 这会打开一个较大但空白的对话框,底部有一个 Add 按钮。 点击这个添加按钮。

你会看到另一个对话框。 这一个看起来几乎和集合变量对话框一样,除了它有一个名字。
在这里,我把我的命名为 LocalTest。
我还添加了许多其他的变量,其中一个叫做bearer_token,值为 foo。 另一个是 user_id值为1。

一旦完成编辑,我们点击对话框底部附近的添加按钮,然后关闭管理环境对话框。 在我可以在这个环境中使用这个变量之前,还有最后一个重要的、经常被忘记的步骤:我们需要从环境选择器下拉菜单中选择这个环境。
现在这些额外的变量可以像上面的 API_host 变量一样进行访问: {{bearer_token}} 和 {{user_id}}
路由参数
在现代 API 中使用路由参数是很常见的。 这些是作为 URL 主路径的一部分所提供的值。例如,考虑 http://localhost:4000/user/42/preferences 这个 URL:
这样的 URL 中的数字42实际上是一个参数,很可能是本例中的用户 ID。 当服务器端应用程序路由传入请求时,服务端会提取该值,并使其随时可用于最终处理请求和构造响应的函数。 这是一个路由参数。 这对于编辑参数或是在 Postman 中使用也比较简单。语法是将参数以冒号(:)后跟参数名的形式直接放入 URL 中。 对于 Postman 中的这个示例请求,我将其输入为{{API_host}}/user/:userId/preferences。 然后,在请求的参数( Params)选项卡上,我可以看到它被列出并设置了具体的值。 在下图中,我将其设置为在前面的环境变量中指定的用户 id 变量。
我也可以把我的变量直接写到 URL 中,但在我看来,这种方式更干净。

[1] [2] [3] [4]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载