Проверка ASP.NET

Я получаю сообщение об ошибке проверки, когда пользователь вводит иностранное имя. Пример:

System.Web.HttpRequestValidationException: от клиента было обнаружено потенциально опасное значение Request.Form (ctl00$pageContent$txtName="Pedro ú logo").

где ú переводится как & # 250 ; (без пробелов конечно)

Эти иностранные символы допустимы и не должны вызывать ошибки проверки. Я хочу, чтобы проверка ASP.NET выполнялась с использованием UTF-16, а не UTF-8.

На многих веб-сайтах, в блогах и форумах предлагается просто отключить проверку (например, ValidateRequest="false").

Есть ли способ обойти это БЕЗ отключения проверки? Отключение проверки неприемлемо для этого приложения.

Спасибо, Джефф


person Community    schedule 15.05.2009    source источник


Ответы (2)


На самом деле невозможно настроить механизм проверки запроса. Это как-то жестко запрограммировано. Я не вижу причин, по которым вы не хотите его отключать. Если вы позаботитесь о очистке и HTML-кодировании всего, что вы получаете от пользователя и хотите отобразить на странице (что вы должны делать в любом случае, независимо от проверки запроса ASP.NET), вам это не понадобится.

person mmx    schedule 15.05.2009
comment
Отличный ответ. Меня всегда ставили в тупик мифы о проверке запросов — люди всегда говорят, что это открывает потенциальную дыру в безопасности, но я еще не видел ни одного примера, чтобы кто-то воспользовался этим, чего нельзя было бы сделать в любом случае. - person womp; 15.05.2009

У меня была эта проблема.

Способ обойти это — очистить ввод с помощью javascript ДО того, как вы нажмете сообщение.

См. этот ответ stackoverflow на аналогичный вопрос для некоторого javascript

Кроме того, это в значительной степени дубликат вопрос о stackoverflow (ссылка выше)

person Scott Schulthess    schedule 15.05.2009