gpt4 book ai didi

asp.net - 使用 WCAT 负载测试解决 ValidateAntiForgeryTokenAttribute()

转载 作者:行者123 更新时间:2023-11-28 21:31:43 24 4
gpt4 key购买 nike

我正在使用 WCAT 对 ASP.NET MVC 应用程序执行负载测试。因为此应用程序使用防伪 token 安全验证,所以我想知道是否可以在 WCAT 脚本值中动态生成后数据值,以便在每次获得防伪 cookie 值时注入(inject)有效 token 。

有什么想法吗?提前致谢。

最佳答案

我确信它可以完成,但我不知道有什么方法可以编写 WCAT 交易脚本来生成有效的防伪 token 。

相反,我所做的是实现一个条件过滤器,它将 ValidateAntiForgeryTokenAttribute() 应用于我的所有 POST 操作。一旦你有了条件过滤器,你就可以添加一个 AppSettings 值,它允许你打开/关闭属性。即,当您进行负载测试时,您将其关闭。

您可以了解如何实现条件过滤器 here .

在我的项目中,我在 Global.asax.cs Application_Start() 中启用和禁用条件过滤器,如下所示:

bool useAntiForgeryToken = string.Compare(ConfigurationManager.AppSettings["useAntiForgeryToken"], "true", StringComparison.InvariantCultureIgnoreCase) == 0;
if (useAntiForgeryToken) {

// Ensure that all POST actions are automatically decorated with the ValidateAntiForgeryTokenAttribute.
IEnumerable<Func<ControllerContext, ActionDescriptor, object>> conditions =
new Func<ControllerContext, ActionDescriptor, object>[] {
(controllerContext, actionDescriptor) =>
string.Equals(controllerContext.HttpContext.Request.HttpMethod, "POST", StringComparison.OrdinalIgnoreCase ) ? new ValidateAntiForgeryTokenAttribute() : null
};

// Create the conditional filter using the condition we defined
var provider = new ConditionalFilterProvider(conditions);

// And add the conditional filter
FilterProviders.Providers.Add(provider);
}

我的 web.config 中有这样一个 AppSetting:

<appSettings>
<add key="useAntiForgeryToken" value="true">
</appSettings>

注意:除了禁用防伪 token 外,您还需要在 web.config 中将 requestValidation 模式设置为 2.0,如下所示 (reference):

<httpRuntime requestValidationMode="2.0">

一旦你准备好这些东西,再次运行你的 WCAT 脚本,你应该是黄金。

关于asp.net - 使用 WCAT 负载测试解决 ValidateAntiForgeryTokenAttribute(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18571821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com