[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 发送它。

下面展示了一个请求参数设置示例。

设置非常简单;您可以通过在目标 POST 请求的采样器中设置格式为“${使用正则表达式提取设置的引用名称}”的

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

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

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

■ 基本身份验证

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

“添加”→“配置元素”→“HTTP 身份验证管理器”。添加完成后,将显示上述屏幕。输入“基本 URL”、“用户名”和“密码”即可完成配置。

■ HTTP Cookie 管理器

接下来,如果您的场景需要保留 Cookie,您可以通过配置“HTTP Cookie 管理器”来使用 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/)

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

如果您觉得这篇文章有用,请点击【点赞】!
5
加载中...
5票,平均分:1.00/15
12,375
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

福井宏人

他于2020年6月加入Beyond,在系统开发部(横滨办公室)工作。他
的工作主要使用PHP,负责开发游戏API和Web系统,以及开发私有的Shopify应用。
他热爱音乐,尤其喜欢西方音乐,业余爱好是弹吉他。他最喜欢的电视剧是《侦探!夜探》和《广告街天堂》。