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