如何为CSRF令牌编写正则表达式?

时间:2015-07-23 06:41:59

标签: regex jmeter

我正在尝试在struct address { struct address *nb1; struct address *nb2; struct address *nb3; struct address *nb4; } *site; 正则表达式提取器中为CSRFToken编写正则表达式,如:

  

CSRFToken:JMeter

我写的表达方式如下:

7e19ef44-5ff5-440b-865c-7ef56ccecc95

现在,当我将此表达式用于其他请求时,CSRFtoken值未被提取,因为它显示默认值 - 结果中的Ref. name: CSRFTokenValue Regular expression - CSRFToken: (.*?); Template: 1$1 Match no.: 1 Default value: ***CSRF Token Value not Fetched***

知道如何为这样的CSRFToken值编写正则表达式吗?

4 个答案:

答案 0 :(得分:1)

使用贪婪表格

Regular expression - CSRFToken: (.*);

.*?非贪婪,在上面它会在匹配第一个空字符串后停止匹配。

答案 1 :(得分:0)

如果它保留了它的uuid-ish性质,你可以使用这个表达式来抓住它:

[a-f\d]{8}(-[a-f\d]{4}){3}-[a-f\d]{12}?

但Avinash的解决方案也可以。

答案 2 :(得分:0)

我建议修改你的正则表达式如下:

  1. 删除分号,以便正则表达式如下所示:CSRFToken: (.*)
  2. 将“模板”修改为$1$
  3. 更改正则表达式提取器范围,默认情况下,它在响应中搜索正文,如果CSRF令牌作为标题出现,则需要“告诉”正则表达式提取器查找响应标头。
  4. 如果CSRF令牌以Cookie形式出现 - 您甚至不需要正则表达式提取器,则可以从HTTP Cookie Manager获取值

    有关在JMeter测试脚本中绕过CSRF保护的详细信息,请参阅How to Load Test CSRF-Protected Web Sites指南。

答案 3 :(得分:0)

[[:blank:]]{1}.*\z

详细说明:

  • [[:blank:]]{1}第一个空格
  • *.任何字符

比赛示例: https://regex101.com/r/eR9oY3/2

OR

[[:alnum:]]+-[[:alnum:]]+-[[:alnum:]]+-[[:alnum:]]+[[:alnum:]]+-[[:alnum:]]+\Z

比赛示例: https://regex101.com/r/eR9oY3/3