validateRequest = "false" ведет себя странно - PullRequest
6 голосов
/ 05 апреля 2011

(ASP.NET 4.0 C #)

У меня есть <httpRuntime requestValidationMode="2.0" /> в webconfig.И у меня есть validateRequest="false" в каталогах страниц.

На одной странице я отправляю некоторые данные (html) из ckeditor (textarea) в базу данных.Работает отлично.На другой странице я заполняю ckeditor данными из базы данных, затем обновляю их (отправляю обратно) и получаю известное «потенциально опасное значение Request.Form было обнаружено клиентом».

Смущает меня.Единственное отличие состоит в том, что на второй странице данные динамически вставляются в текстовую область, где на первой странице текстовая область пуста при загрузке страницы.Я что-то здесь упускаю?Я уверен, что кодирование / декодирование ничего не значит, так как фреймворк останавливает это, прежде чем я даже могу начать возиться с этим на бэкэнде.

Ответы [ 3 ]

1 голос
/ 09 апреля 2011

Хорошо, я не нашел ответа на вопрос, почему он так себя ведет.Но я нашел очень простой и быстрый способ обойти это (+ новые преимущества).

Вот парень, который сделал .net ckeditor control

http://cksource.com/forums/viewtopic.php?f=11&t=15882

ты иди.Работает как шарм.Никаких ошибок валидации.

0 голосов
/ 06 апреля 2011

ValidationRequest = "false" применяется только к файлам .aspx в предыдущих версиях платформы.

В ASP.NET 4 он включен для всех запросов до фазы BeginRequest любого HTTP-запроса.Таким образом, проверка запросов применяется к запросам для всех ресурсов ASP.NET, таких как вызовы веб-служб и пользовательские обработчики HTTP.

Чтобы обойти этот новый механизм, необходимо создать свой собственный RequestValidator и изменить web.config для использования этого пользовательского средства проверки.

http://msdn.microsoft.com/en-us/library/system.web.util.requestvalidator.aspx

0 голосов
/ 05 апреля 2011

Попробуйте установить для ValidateRequest значение false в директиве страницы? Лучшим вариантом может быть использование библиотеки Microsoft Anti-Cross Site Scripting Library:

http://msdn.microsoft.com/en-us/library/aa973813.aspx

Подобный вопрос был дан ответ здесь:

В чем разница между requestValidationMode 2.0 и 4.0

Также возможно, что ASP.NET 4.0 не установлен или пул приложений не настроен для работы под 4.0.

...