Обход ValidateAntiForgeryTokenAttribute() с нагрузочным тестированием WCAT
Я использую WCAT для выполнения нагрузочного теста в приложении ASP.NET MVC. Поскольку это приложение использует проверку безопасности токена защиты от подделки, мне интересно, возможно ли динамически генерировать значения postdata в значениях сценария WCAT, чтобы вводить действительный токен каждый раз, когда я получаю значение cookie против подделки.
Есть идеи? заранее спасибо.
1 ответ
Я уверен, что это может быть сделано, но я не знаю, как создать сценарий транзакции WCAT, которая выдаст действительный токен против подделки.
Вместо этого я применил условный фильтр, который применяет ValidateAntiForgeryTokenAttribute() ко всем моим действиям POST. Когда у вас есть условный фильтр, вы можете добавить значение AppSettings, которое позволяет вам включать / выключать атрибут. т.е. когда вы тестируете нагрузку, вы выключаете его.
Вы можете узнать, как реализовать условный фильтр здесь.
В моем проекте я включаю и отключаю условный фильтр в 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);
}
И у меня есть такой AppSetting в моем web.config:
<appSettings>
<add key="useAntiForgeryToken" value="true">
</appSettings>
Примечание: в дополнение к отключению токена защиты от подделки вам также необходимо установить для режима requestValidation значение 2.0 в вашем файле web.config, например так ( ссылка):
<httpRuntime requestValidationMode="2.0">
Как только вы это сделаете, снова запустите ваши сценарии WCAT, и вы должны быть в восторге.