ValidateRequest = “ложь” для единственного управления

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

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

Спасибо за любую справку.

18
задан Stacked 12 July 2016 в 12:24
поделиться

2 ответа

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

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

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

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

19
ответ дан 30 November 2019 в 08:37
поделиться

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

public static string RemoveMarkUp(this string s) {
   return Regex.Replace(s, @"<[a-zA-Z\/][^>]*>", string.Empty);
}
0
ответ дан 30 November 2019 в 08:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: