Потенциально опасное значение Request.Form - PullRequest
0 голосов
/ 17 февраля 2010

В моем приложении ASP.NET я получаю следующее сообщение об ошибке во время POST с определенным вводом:

На клиенте обнаружено потенциально опасное значение Request.Form

Я знаю, что это происходит потому, что особенность .NET, называемая Запросом проверки, предотвращает отправку потенциально опасных символов, которые могут быть использованы при атаке XSS. Однако я использую редактор HTML, и мне нужно отключить эту функцию для этого редактора.

Я могу сделать это в своем файле web.config, но он действует глобально, что меня не устраивает, поскольку оно отключает эту функцию безопасности во всех полях моего приложения, а не только в редакторе HTML.

Я пытался установить свойство ValidateRequest директивы Page на определенных страницах, на которых я хотел отключить это, но, к сожалению, это не сработало.

Кто-нибудь может вспомнить причину, по которой это не сработало?

Редактировать

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

Теперь, когда редактор сам по себе работает и больше не выдает эту ошибку ... Я столкнулся с другой проблемой, и я запутался, почему это вообще может быть проблемой. У меня есть панировочные сухари в верхней части страницы, когда вы нажимаете одну из хлебных крошек (кнопки ссылки) на странице бомбы с той же ошибкой («Потенциально опасное значение Request.Form ...»). Я не понимаю, почему это произошло. Кнопки ссылок просто отправляют форму и отправляют страницу обратно на себя - кнопка отправки делает то же самое. Так почему же кнопка отправки работает правильно, а не кнопки ссылки для хлебных крошек?

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

Мысли

Ответы [ 3 ]

2 голосов
/ 17 февраля 2010

Я установил для ValidateRequest значение false, и это сработало для меня ... Вот что Microsoft рекомендует: http://www.asp.net/learn/whitepapers/request-validation/. Если вы используете VS, может быть, попробовать очистить и восстановить?

Я склонен делатьэто в директиве @Page, а не в конфигурационном файле, но вы первый раз услышали, что он не работает ...

0 голосов
/ 18 марта 2010

Вот трюк jQuery для кодирования значения поля, в данном случае «textarea»

            $("textarea").each(function(i) {
                var $textbox = $(this);
                $textbox.val($('<div/>').text($textbox.val()).html());
            });
0 голосов
/ 17 февраля 2010

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

  1. В пуле приложений есть копия DLL в памяти, которая не соответствует HTML-части страницы.
  2. Если вы используете cassini, прекратите отладку, остановите процесс сервера cassini, очистите решение и перестройте.
  3. Если это происходит на удаленном сервере, перезапустите пул приложений, очистите кеш страниц и повторите попытку.
  4. Возможно, что временные файлы asp.net не могут быть перезаписаны после перезапуска или восстановления.
  5. Если вы находитесь на удаленном сервере, остановите веб-сайт, остановите пул приложений. Перейдите в соответствующий каталог временных файлов ASP.Net и удалите папку для своего приложения.
  6. Если вы находитесь на сервере cassini, остановите отладку, остановите процесс сервера cassini и закройте VS. Затем перейдите во временные файлы ASP.Net и удалите их все. Перезагрузите VS, очистите / соберите. Попробуйте еще раз.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...