Обнаружено потенциально опасное значение Request.Form: устранение этих ошибок заранее или по факту - PullRequest
0 голосов
/ 17 марта 2010

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

Я рассматриваю три варианта в порядке предпочтения:

1) При отправке формы (я использую формы просмотра почти исключительно, если это помогает), если обнаруживаются потенциально опасные символы, автоматически их удаляют и отправляют.

2) При отправке формы, если обнаружены потенциально опасные символы, предупредите пользователя и дайте ему исправить это, прежде чем пытаться снова.

3) После создания исключения разберитесь с ним и предупредите пользователя.

Я надеюсь, что один из первых двух вариантов мог бы сделать что-то глобальное ... Я знаю, что для третьего мне придется изменить ТОННУ блоков Try-Catch, которые у меня уже есть. Выполнимо, но трудоемко. Я предпочел бы быть проактивным, если это вообще возможно, и избегать исключений все вместе.

Возможно, одним из подходов к # 1 было бы написать блок кода, который мог бы перебрать все поля ввода текста в форме просмотра, во время события вставки / обновления и удалить символы. Я в порядке с этим, но я бы предпочел не сильно изменять все мои события вставки / обновления, чтобы выполнить это. Или, может быть, я просто создаю другой класс для проверки / удаления текста и вставляю только 1 строку кода в каждое событие вставки / обновления. Если кто-то может придумать пример кода любого из этих подходов, это поможет.

Спасибо за любые идеи или информацию. Я определенно открыт для других решений; это только те 3, которые пришли на ум. Я могу сказать, что не хочу отключать проверку запросов.

Ответы [ 2 ]

1 голос
/ 17 марта 2010

Я бы предпочел № 2 или № 3. В # 1 вы изменяете то, что пользователь вводил без его ведома.

Вы можете перейти к отправке события формы, перебрать редактируемые поля и выполнить проверку работоспособности.

Для oprion # 3 вы можете переопределить методы OnError класса Page и предоставить пользовательское сообщение об ошибке, указывающее на проблему. (Также вы можете использовать событие ELMAH или Application_Error) для обработки этих ошибок.

Я бы посоветовал вам использовать как клиентский, так и серверный подход при проверке.

1 голос
/ 17 марта 2010

Более простое решение, которое отлично работает во многих случаях: разрешить ввод буквенно-цифровых символов в текстовые поля. Конечно, это не сработает для любых больших кусков текста, которые вы ожидаете получить, но для более простых вещей это работает как шарм.

Проверка не алфавитно-цифровых символов, присутствующих в полях при отправке формы, и создание диалогового окна с предупреждением с использованием некоторого javascript - это довольно просто.

И, конечно же, выполните те же проверки на сервере, прежде чем что-то делать с переданными значениями.

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