Эквивалент PHP htmlspecialcharacters в .NET?

В PHP есть отличная функция под названием htmlspecialcharacters (), в которой вы передаете ей строку, и она заменяет все специальные символы HTML их безопасными эквивалентами, это почти универсальный магазин для очистки ввода. Очень хорошо, правда?

А есть ли эквивалент в любой из библиотек .NET?

Если нет, может ли кто-нибудь сослаться на какие-либо примеры кода или библиотеки, которые с этим справляются?

Ответов (5)

Решение

Попробуй это.

var encodedHtml = HttpContext.Current.Server.HtmlEncode(...);

System.Web.HttpUtility.HtmlEncode (строка)

Не знаю, есть ли точная замена, но есть метод, HtmlUtility.HtmlEncode который заменяет специальные символы их эквивалентами в HTML. Близкий родственник предназначен HtmlUtility.UrlEncode для рендеринга URL-адресов. Вы также можете использовать элементы управления валидатором, такие как RegularExpressionValidator, RangeValidator и, System.Text.RegularExpression.Regex чтобы убедиться, что вы получаете то, что хотите.

На самом деле, вы можете попробовать этот метод:

HttpUtility.HtmlAttributeEncode()

Почему? Ссылаясь на страницу HtmlAttributeEncode в документах MSDN :

Метод HtmlAttributeEncode преобразует только кавычки ("), амперсанды (&) и левые угловые скобки (<) в эквивалентные символьные сущности. Это значительно быстрее, чем метод HtmlEncode.

В дополнение к приведенным ответам: при использовании механизма просмотра Razor (который является механизмом просмотра по умолчанию в ASP.NET) использование символа «@» для отображения значений автоматически кодирует отображаемое значение. Это означает, что вам не нужно использовать кодировку.

С другой стороны, если вы не хотите, чтобы текст кодировался, вы должны указать это явно (используя @ Html.Raw ). На мой взгляд, это хорошо с точки зрения безопасности.