Неправильный запрос веб-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"];
}