Что делать для очистки входных данных? - PullRequest
0 голосов
/ 16 октября 2010

Мне нужно начать беспокоиться о пользовательском вводе. Я заметил, что класс htmlhelper не справляется с этой задачей. Кто-нибудь может предложить хорошую основу для очистки входных данных? Я использую asp.net mvc2.

Ответы [ 3 ]

3 голосов
/ 16 октября 2010

Аннотации данных - хорошее начало для проверки модели. См. эту ссылку для получения подробных сведений о настройке аннотаций данных. Они могут использоваться в сочетании с библиотеками JavaScript MVC Microsoft или jQuery для выполнения проверки на стороне клиента, и, кроме того, могут использоваться на стороне сервера, чтобы проверить, действительна ли однажды связанная модель. См. Свойство ModelState.IsValid .

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

Комбинация обоих этих подходов должна дать вам возможность справиться практически с любой необходимой вам дезинфекцией.

3 голосов
/ 16 октября 2010

Класс HtmlHelper предназначен для вывода HTML, а не для ввода, поэтому я не понимаю, что вы имеете в виду, не делая большую работу по санации пользовательского ввода.Существуют различные способы проверки ввода, такие как аннотации данных или использование какой-либо сторонней инфраструктуры, такой как FluentValidation .Если вы используете базу данных SQL, вам также следует избегать внедрения SQL, используя подготовленные операторы и параметризованные запросы.Также, когда вам нужно показать пользовательский ввод на странице, вы всегда должны правильно кодировать его в HTML, используя <% = <code>Html.Encode("some user input") %> или более новый синтаксис <%: "some user input" %>.

2 голосов
/ 17 октября 2010

Я рекомендую не очищать входные данные, а, скорее, очищать вывод.

Это позволяет избежать возможной неправильной очистки или искажения фактического пользовательского ввода.

Позволяет пользователю отправлять HTML, простоубедитесь, что когда он отображается, он всегда закодирован.

Как сказал Дарин, используйте синтаксис <%: %> или <%= Html.Encode() %>, чтобы позаботиться об этом

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