validateRequest="false" ведет себя странно

(ASP.NET 4.0 C#)

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

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

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

3 ответа

Решение

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

Theres парень, который сделал.NET Ckeditor контроля

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

Вот и ты. Работает как шарм. Нет ошибок проверки, что так всегда.

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

Попробуйте установить для 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.

Другие вопросы по тегам