[JMeter] 获取 CSRF 令牌并发出 POST 请求

您好!我是系统开发部的福井!

最近在使用 JMeter 创建场景时,我从受 CSRF 保护的页面发出 POST 请求时多次收到 403 错误,因此我想介绍一下如何解决这个问题!

本文将主要
获取 CSRF 令牌
和使用获取的令牌发出 POST 请求
介绍两点:

顺便一提,我在这篇博客的末尾列出了一些重要的JMeter设置,需要记住,这也算是我的个人备忘录。我希望所有计划使用JMeter的人都能读到最后。

获取 CSRF 令牌

我们首先来解释一下如何获取 CSRF 令牌。
要获取 CSRF 令牌,“正则表达式提取”我们将使用

■ 新增“正则表达式提取”功能

要添加正则表达式提取功能,
“添加”→“后处理”→“正则表达式提取”您可以将其添加到发出 CSRF 令牌的屏幕显示的 HTTP 请求采样器中,
例如,如果存在用于登录处理的 POST 请求,并且请求参数中需要 CSRF 令牌,则应将正则表达式提取功能添加到前面的“登录屏幕显示”GET 请求中。

添加完成后,将出现以下屏幕,允许您配置每个项目。

■ “正则表达式提取”设置

例如,我们设置了以下参数。我们将解释所需的设置。

① 要检查的字段

选择要提取的目标值。在本例中,“正文”请选择
*这是因为我们将使用从中提取 CSRF 令牌的页面发出的 GET 请求的响应正文。

② 参考名称

一个变量来保存提取的值(在本例中为 CSRF 令牌)。稍后在发送 POST 请求时,该变量将用作 CSRF 参数的值。您可以输入任何字符串。

③ 正则表达式

要放置 CSRF 令牌的输入标签输入使用正则表达式写入 `value` 属性的值您可以
*上图中的输入内容仅为示例。请将其修改为与您实际在屏幕上看到的响应中的输入标签格式一致。如果输入标签的格式不同(例如,`id` 属性是否存在,或者 `name` 属性错误),您将无法获取 CSRF 令牌值。这是很多人经常遇到的问题,因此,如果可能,我们建议您使用开发者工具复制 HTML 中的输入标签,并在使用前修改 `value` 属性的值。

④ 模板

以使用获得的第一个值“$1$”请输入

至此,正则表达式提取设置完成。

使用获取的令牌发出 POST 请求

接下来,我们将向您展示如何将获得的 CSRF 令牌包含在请求参数中,并通过 POST 发送它。

以下示例展示了如何设置请求参数。

设置过程非常简单;“${正则表达式提取中设置的引用名称}”的格式设置参数来发送获取到的 CSRF

剩下的工作就是根据具体情况设置请求标头和其他必要的参数。

额外提示(需要记住的 JMeter 设置)

正如开头提到的,我想介绍两个你应该记住的 JMeter 设置。

■ 基本身份验证

执行负载测试时,如果需要基本身份验证,您可以使用“HTTP 身份验证管理器”登录。您
可以将“HTTP 身份验证管理器”添加到任何需要基本身份验证的“线程组”、“简单控制器”或“初始 HTTP 请求采样器”。添加方法是:
“添加”→“配置元素”→“HTTP 身份验证管理器”依次点击

添加完成后,将显示如上图所示的屏幕,请输入“基本 URL”、“用户名”和“密码”以完成设置。

■ HTTP Cookie 管理器

接下来,对于需要保留 Cookie 的场景,可以通过配置“HTTP Cookie 管理器”来实现。HTTP
Cookie 管理器可以添加到任何“线程组”、“简单控制器”或“采样器”元素中,具体操作“添加”→“配置元素”→“HTTP Cookie 管理器

添加后,将显示上述屏幕,但除非您需要使用特定的值进行测试,否则可以直接使用 HTTP Cookie 管理器。
*关于“每次迭代后丢弃 Cookie?”选项,选中此复选框将在每次循环后丢弃 Cookie。
*添加 HTTP Cookie 管理器后,运行场景并确认请求正文中已发送 Cookie 数据,即可完成配置。

最后

我已推出“SEKARAKU Lab”,这是我所属系统开发公司的服务网站。Beyond
提供从服务器设计、构建到运维的一站式服务,如果您在服务器端开发方面遇到任何问题,欢迎随时联系我们。SEKARAKU
Lab:[https://sekarakulab.beyondjapan.com/](https://sekarakulab.beyondjapan.com/)

今天就到这里啦!
感谢您阅读到最后!

如果您觉得这篇文章对您有帮助,请点个“赞”!
6
加载中...
6票,平均分:1.00/16
12,670
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

福井宏人

我于2020年6月加入Beyond公司,在系统开发部(横滨办公室)工作。
我的工作主要涉及PHP,负责游戏API、Web系统和Shopify私有应用的开发。
我喜欢音乐,尤其偏爱西方音乐,业余爱好是弹吉他。我最喜欢的电视节目是《侦探!夜间侦探》和《外貌!Admatic Heaven》。