【发布时间】:2010-09-06 05:14:22
【问题描述】:
PHP 有一个很棒的函数,叫做htmlspecialcharacters(),你可以在其中传递一个字符串,它会用安全的等效字符替换所有 HTML 的特殊字符,它几乎是一个用于清理输入的一站式商店。很不错吧?
那么在任何 .NET 库中是否有等价物?
如果没有,任何人都可以链接到任何做得好的代码示例或库吗?
【问题讨论】:
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 page at MSDN docs:
HtmlAttributeEncode 方法仅将引号 (")、与号 (&) 和左尖括号 (
【讨论】:
除了给出的答案: 当使用Razor view engine(这是 ASP.NET 中的默认视图引擎)时,使用“@”字符显示值将自动对显示的值进行编码。这意味着您不必使用编码。
另一方面,当您不希望对文本进行编码时,您必须明确指定(通过使用@Html.Raw)。在我看来,从安全的角度来看,这是一件好事。
【讨论】: