Потенциально опасное значение Request.Form

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

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

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

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

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

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

Edit

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

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

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

Мысли?

0
17 февр. '10 в 18:30
источник поделиться
3 ответов

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

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

2
17 февр. '10 в 18:48
источник

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

  • Пул приложений имеет копию .dll в памяти, которая не соответствует части html страницы.
  • Если вы используете cassini, остановите отладку, остановите процесс сервера cassini, очистите решение и перестройте.
  • Если вы испытываете это на удаленном сервере, переустановите пул приложений, очистите кеш страниц и повторите попытку.
  • Возможно, временные файлы asp.net не могут быть перезаписаны после повторного использования или восстановления.
  • Если вы находитесь на удаленном сервере, остановите его, остановите пул приложений. Перейдите в соответствующий каталог временных файлов ASP.Net и удалите папку для своего приложения.
  • Если вы находитесь на сервере cassini, прекратите отладку, остановите процесс сервера cassini и закройте VS. Затем перейдите к временным файлам ASP.Net и удалите их все. Перезагрузка VS, очистка/сборка. Повторите попытку.
0
17 февр. '10 в 18:54
источник

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

            $("textarea").each(function(i) {
                var $textbox = $(this);
                $textbox.val($('<div/>').text($textbox.val()).html());
            });
0
18 марта '10 в 17:53
источник

Посмотрите другие вопросы по меткам или Задайте вопрос