Неправильный запрос веб-API не прошел проверку

Мы имеем дело с приложением Web API, которое уязвимо для внедрения XSS. При переходе в нечто подобное <script>alert("a")</script> как часть строки запроса, запрос проходит без проблем.

При исследовании этой проблемы кажется, что все сталкиваются с противоположной проблемой, что они не могут отключить проверку запросов, но кажется, что мы не можем ее включить.

Следуя нижнему ответу в этой ветке форума, мы пытались сломать System.Web.HttpRequestValidationException брошен для того, чтобы проверить, подавляем ли мы его где-либо, но исключений нет.

Мы попытались установить requestValidationMode в httpRuntime узел Web.config в 2.0, 4.0 а также 4.5, но ни один из них не работает.

Изменить: попытка принудительной проверки путем аннотирования действия контроллера с помощью [ValidateInput(true)] или звонит HttpContaxt.Current.Request.ValidateInput() внутри действие тоже не работает.

Тем не менее, доступ к QueryString переменная через HttpContext.Current.Request.QueryString["myVariable"] приводит к HttpRequestValidationException быть брошенным

public override void OnActionExecuting(HttpActionContext actionContext)
{
    //Doesn't work 
    HttpContext.Current.Request.ValidateInput();

    //Works, but only if the malicious request is in the QueryString
    var x = HttpContext.Current.Request.QueryString["doesNotExist"];
}

0 ответов

Другие вопросы по тегам