ValidateRequest ="false" для одного элемента управления

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

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

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

3 ответа

Решение

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

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

Редактировать:

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

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

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

public static string RemoveMarkUp(this string s) {
   return Regex.Replace(s, @"<[a-zA-Z\/][^>]*>", string.Empty);
}
Другие вопросы по тегам