【问题标题】:Unauthorized CSRF validation failed in jMeter testing未经授权的 CSRF 验证在 jMeter 测试中失败
【发布时间】:2015-01-16 01:03:11
【问题描述】:

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

而采样器结果如下,

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 验证错误以及如何解决。

【问题讨论】:

    标签: jmeter csrf django-csrf


    【解决方案1】:

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

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

    1. 第一个 HTTP 请求:打开第一页
    2. 通过以下后处理器之一从响应中提取 CSRF 令牌
    3. 第二个 HTTP 请求:打开第二个页面(受 CSRF 保护)。将在步骤 2 中提取的令牌添加到以下其中一项:

    取决于您的服务器希望令牌存在的位置。

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

    【讨论】:

    • 我会尝试使用 firebug 扩展来做,并让你知道状态
    • 现在我不在本地主机上工作,我有单独的测试服务器。我提出了一个请求,但是如何提取 CSRF 令牌响应(步骤 2)。我正在使用 blaze Meter 插件,所以我可以看到所有标题详细信息,包括“X-CSRF-Token”。我已将 HTTP 标头管理器添加到 step1。请帮助我怎么做htat
    • 我们需要查看您的录制详细信息,以便能够帮助并建议提取令牌并将其传递给服务器的最佳方式。
    • 我尝试使用火焰计记录,可以吗?或者我是否需要使用任何其他记录过程。请让我了解更多信息
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    • 2014-12-28
    相关资源
    最近更新 更多