Эквивалент PHP htmlspecialcharacters в .NET?
В PHP есть отличная функция под названием htmlspecialcharacters (), в которой вы передаете ей строку, и она заменяет все специальные символы HTML их безопасными эквивалентами, это почти универсальный магазин для очистки ввода. Очень хорошо, правда?
А есть ли эквивалент в любой из библиотек .NET?
Если нет, может ли кто-нибудь сослаться на какие-либо примеры кода или библиотеки, которые с этим справляются?
Ответов (5)5
Не знаю, есть ли точная замена, но есть метод, HtmlUtility.HtmlEncode
который заменяет специальные символы их эквивалентами в HTML. Близкий родственник предназначен HtmlUtility.UrlEncode
для рендеринга URL-адресов. Вы также можете использовать элементы управления валидатором, такие как RegularExpressionValidator
, RangeValidator
и, System.Text.RegularExpression.Regex
чтобы убедиться, что вы получаете то, что хотите.
На самом деле, вы можете попробовать этот метод:
HttpUtility.HtmlAttributeEncode()
Почему? Ссылаясь на страницу HtmlAttributeEncode в документах MSDN :
Метод HtmlAttributeEncode преобразует только кавычки ("), амперсанды (&) и левые угловые скобки (<) в эквивалентные символьные сущности. Это значительно быстрее, чем метод HtmlEncode.
В дополнение к приведенным ответам: при использовании механизма просмотра Razor (который является механизмом просмотра по умолчанию в ASP.NET) использование символа «@» для отображения значений автоматически кодирует отображаемое значение. Это означает, что вам не нужно использовать кодировку.
С другой стороны, если вы не хотите, чтобы текст кодировался, вы должны указать это явно (используя @ Html.Raw ). На мой взгляд, это хорошо с точки зрения безопасности.