asmx пропускает проверку запроса при получении сообщения от jQuery.ajax с dataType: "json"
У меня есть функция веб-службы ASP.NET (asmx) со строковыми параметрами. Встроенная проверка запросов должна перехватывать теги HTML, и она работает при использовании автоматически сгенерированной тестовой страницы localhost или jjuery / post, если для dataType не установлено значение json (ValidateRequest="true").
С dataType:"json"
HttpRequestValidationException
не срабатывает:
$.ajax({
type: "POST",
url: "/my.asmx/SetName",
data: '{"name":"' + $("#name").val() + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false
});
Если я удалю contentType
а также dataType
Я получил ожидаемое HttpRequestValidationException
,
Это делает мою уязвимую. К сожалению, WCF не вариант.
1 ответ
Это по замыслу. Проверяются только пути HttpRequest, PathInfo, RawUrl, Cookies, Form, QueryString и File. Заголовки также могут быть проверены, если вы используете специальный валидатор запросов.
Причина, по которой проверка запроса выполняется при удалении contentType, заключается в том, что JQuery по умолчанию имеет значение application/x-www-form-urlencoded
который является формой поста (HttpRequest.Form)