未经授权的CSRF验证在jMeter测试中失败

时间:2014-11-18 18:14:59

标签: jmeter csrf django-csrf

我是jMeter测试的新手。我想在UI上测试字段更新。因此,当我运行测试时,我收到了CSRF验证错误。我该如何解决这个问题。我的测试计划看起来像,

enter image description here

采样器结果如下,

Thread Name: Thread Group 1-1
Sample Start: 2014-11-18 23:37:49 IST
Load time: 688
Latency: 688
Size in bytes: 483
Headers size in bytes: 457
Body size in bytes: 26
Sample Count: 1
Error Count: 1
Response code: 401
Response message: Unauthorized : CSRF validation failed

Response headers:
HTTP/1.1 401 Unauthorized : CSRF validation failed
Date: Tue, 18 Nov 2014 18:08:07 GMT
Server: Apache/2.4.7 (Ubuntu)
X-Powered-By: PHP/5.5.9-1ubuntu4.5
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Last-Modified: Tue, 18 Nov 2014 18:08:07 +0000
Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0
ETag: "1416334087"
Vary: Accept
Content-Length: 26
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: application/json

为什么我们会收到CSRF验证错误以及解决方法。

1 个答案:

答案 0 :(得分:5)

CSRF代表Cross-site request forgery,由于缺少必需的动态请求参数(通常是Cookie或标头),您将收到CSRF验证错误。

我建议在启用Firefox BrowserHttpFox扩展名的FireBug中执行您的方案,并检查请求详细信息。 CSRF令牌通常作为服务器响应中的cookie出现,需要作为头或请求参数传递。所以它类似于通常的相关性。因此,流程应如下所示:

  1. 第一个HTTP请求:打开第一页
  2. 通过以下后处理器之一从响应中提取CSRF令牌
  3. 第二个HTTP请求:打开第二页(CSRF保护)。将在步骤2中提取的令牌添加到以下之一:
  4. 取决于服务器期望令牌生效的位置。

    将来,查看“localhost”服务器名称 - 不要在应用程序所在的同一台机器上运行JMeter性能测试。