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