Вместо того, чтобы выключать ValidateInput
, так как тогда вы открыты для уязвимостей, вы можете использовать Javascript для кодирования специальных символов. Это позволяет не выкидывать сообщение об ошибке:
Потенциально опасное значение Request.Form было обнаружено из
клиент
для некоторых простых входных данных (таких как электронные письма в формате MyName<me@somewhere.com>
), но все еще с встроенной функцией MVC, чтобы следить за другими инъекциями скрипта. Конечно, если вам нужен ввод в правильном формате на сервере, вам придется декодировать его и быть осторожным, если вы выводите его снова
Если вы уже используете jQuery, его можно легко добавить ко всем полям ввода следующим образом
$("input").on("change", function() {
$(this).val(htmlEscape($(this).val()));
});
htmlEscape
вот моя собственная функция для изменения специальных символов.
function htmlEscape(str) {
return str
.replace(/</g, '<')
.replace(/>/g, '>');
}
В зависимости от ваших потребностей, вы можете захотеть экранировать все символы, используя встроенную функцию Javascript encodeURI
или расширить вышеуказанную функцию, например:
function htmlEscape(str) {
return str
.replace(/&/g, '&')
.replace(/"/g, '"')
.replace(/'/g, ''')
.replace(/</g, '<')
.replace(/>/g, '>');
}