ValidateRequest = "false" для одного элемента управления
Я хочу разрешить пользователям вводить HTML только в одном текстовом поле. Я понимаю, что можно изменить ValidateRequest
в директиве страницы на false, чтобы удалить защиту.
Я предполагаю, что это позволяет вводить HTML в любом текстовом поле на странице. Есть ли способ применить ValidateRequest="false"
только к одному элементу управления?
Спасибо за любую помощь.
Ответы
Ответ 1
Нет, проверка запроса выполняется для всего запроса или ничего.
Валидация была добавлена по умолчанию для защиты разработчиков, которые не знают о проверке ввода. Если вы знаете, что все входные данные должны рассматриваться как небезопасные и знать, как правильно кодировать данные, которые вы используете из ввода, чтобы защитить себя от таких вещей, как SQL-инъекция и межсайтовый скриптинг, вы можете отключить проверку.
Edit:
Обновление: в .NET 4.5 добавлено свойство ValidateRequestMode
, которое позволяет исключить элементы управления из глобальной проверки страницы.
Ответ 2
Новое в .NET 4.5: Вы можете установить ValidateRequestMode="Disabled"
на элемент управления. См. MSDN.
Ответ 3
Попробуйте отключить функцию ValidateRequest и используйте этот метод для удаления разметки из каждого отдельного элемента управления/параметра:
public static string RemoveMarkUp(this string s) {
return Regex.Replace(s, @"<[a-zA-Z\/][^>]*>", string.Empty);
}