【问题标题】:How Can I Load Test A Site That Uses ValidateAntiForgeryToken?如何加载测试使用 ValidateAntiForgeryToken 的站点?
【发布时间】:2012-05-16 12:06:39
【问题描述】:

我想在一个使用ValidateAntiForgeryTokens 的站点上执行负载测试,该站点使用了多个HttpPosts。但是,正如您所料,当我运行负载测试脚本时,我收到了许多 500 错误,因为 __RequestVerificationToken 要么是从先前的请求中复制的,要么是空白的。两者都失败了。

如果我在HttpPost 方法上使用ValidateAntiForgeryToken 属性,是否有任何方法可以加载测试站点?

我已经尝试使用 StresStimulus 和 SmartBear 的 LoadComplete 进行测试。

【问题讨论】:

  • 注释掉 validateantiforgery,所做的只是获取 cookie 值并检查以确保它在同一个 URL 上由该表单给出我不明白为什么你必须测试压力 ValidateAntiForgeryToken 但是如果你需要然后做一个 cookie 检索动作,可以说没有真正的 cookie。加上值得注意的是,你问“我如何破解 ValidateAntiForgeryToken”,你的标题应该反映这一点:-)

标签: asp.net-mvc-3 csrf load-testing


【解决方案1】:

如果您使用 fiddler 和 http://stresstimulus.stimulustechnology.com/(我没有使用过),我不得不想象您可以先登录,然后使用该会话作为您的负载。 AntiForgeryTokens 不是一次性的,只要 cookie 用于您的身份验证信息和在该登录会话期间生成的防伪造令牌,就可以了。

【讨论】:

    【解决方案2】:

    StressStimulus 也有同样的问题。提交到站点的某些表单失败,因为在运行记录的请求时 __RequestVerificationToken 未更新。 {{Auto-Correlation}} 在我的情况下不起作用。我使用正则表达式提取器来解决它。这是我在 StressStimulus 上的帖子的 link

    【讨论】:

    • 在最新版本的 StresStimulus v4.5 中,自动相关已升级为支持 RequestVerificationToken,无需手动创建正则表达式提取器。
    【解决方案3】:

    没有看到您正在使用的场景的详细信息,很难确定。但是我们已经能够自动化许多这些类型的动态字段以用于负载测试(我们唯一无法绕过的是那些需要人工输入的字段,即验证码)。通常,您需要找到 __RequestVerificationToken 字段的值来自何处——可能是 cookie、javascript 计算、隐藏的表单字段等。一旦找到,您可以提取或计算该值作为负载测试场景并将其与请求一起发送。如果我没记错的话,我们之前没有做太多工作就解决了这个问题——如果你想给我们一个解决问题的机会,contact us。一般来说,我们可以比您提到的任何一种解决方案更优雅地处理这些类型的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-08
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多