ValidateRequest = "false" для одного элемента управления - PullRequest
17 голосов
/ 18 марта 2010

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

Я предполагаю, что это позволяет вводить HTML в любой текстовый блок на странице. Можно ли в любом случае применить ValidateRequest="false" только к одному элементу управления?

Спасибо за любую помощь.

Ответы [ 3 ]

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

Нет, проверка запроса выполняется для всего запроса или ничего.

Проверка была добавлена ​​по умолчанию для защиты разработчиков, которые не имеют понятия о проверке ввода. Если вы знаете, что все входные данные должны рассматриваться как небезопасные, и знаете, как правильно кодировать данные, которые вы используете из входных данных, чтобы защитить себя от таких вещей, как внедрение SQL и межсайтовый скриптинг, вы можете отключить проверку.

Edit:

Обновление: в .NET 4.5 добавлено свойство ValidateRequestMode , которое позволяет исключать элементы управления из глобальной проверки страницы.

5 голосов
/ 01 ноября 2012

Новое в .NET 4.5: Вы можете установить ValidateRequestMode="Disabled" для элемента управления. См. MSDN .

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

Попробуйте отключить ValidateRequest и используйте этот метод для удаления разметки с каждого отдельного элемента управления / параметра:

public static string RemoveMarkUp(this string s) {
   return Regex.Replace(s, @"<[a-zA-Z\/][^>]*>", string.Empty);
}
...