Перехват ValidateInput - PullRequest
       14

Перехват ValidateInput

0 голосов
/ 25 августа 2009

Если у меня есть окно поиска на моей странице, я явно не хочу, чтобы пользователь вводил какой-либо код, который может быть опасным.

Однако у меня много страниц ввода данных, и на каждой из них должен быть ValidateInput (false) на контроллерах.

Я не хочу разрешать опасный ввод, но я также не хочу обрабатывать это в каждом контроллере.

Есть ли способ перезаписать сообщение об ошибке по умолчанию и некрасивое сообщение об ошибке .Net или существует единый способ обработки этого на контроллерах.

EDIT

Я думаю, может быть, я не правильно задал вопрос.

Для каждой страницы ввода данных, которую я имею, мне нужно включить проверку ввода. Это становится несколько скучно и громоздко. Каждый раз, когда я принимаю ввод, мне нужно HTMLEncode, а затем HTMLDecode.

Есть ли способ сделать это в одном центральном месте и автоматически?

Ответы [ 2 ]

1 голос
/ 26 августа 2009

О выходе:

Вот интересный пост .
И еще один от Стива Сандерсона.

Я только что прочитал этот пост некоторое время назад - сам не пробовал.

Оставьте отзыв, как это получается.

О вводе:
вы можете попытаться возиться с привязкой модели и значениями HtmlEncode, которые она принимает.

1 голос
/ 25 августа 2009

ASP.NET и MVC не разрешают отправку HTML по умолчанию. Вы должны активно включить это. См. ValidateInputAttribute для получения дополнительной информации.

Кроме того, даже более важно, чем запрет на ввод HTML, не отображать отправленный пользователем HTML при создании вывода. Вот почему все сгенерированные по умолчанию представления используют Html.Encode, и поэтому вы тоже должны.

Обновление в ответ на отредактированный вопрос

Да, возможно (, хотя, вероятно, не рекомендуется ), чтобы глобально отключить ValidateInput. Сделайте тип родительского контроллера и поместите

[ValidateInput(false)] 

... по классу .

Кроме того, я не рекомендую вводить кодировку. Если вы разрешите пользователям вводить HTML, я сохраню это как есть. Ваше веб-приложение может быть не единственным, что запрашивает вашу БД! С точки зрения фильтрации «опасного» HTML это чрезвычайно сложно. Я бы использовал проверенную стороннюю библиотеку очистки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...