PHP有一个很棒的函数叫htmlspecialcharacters(),你可以在其中传递一个字符串,并用它们安全的等价物替换所有HTML的特殊字符,它几乎是一站式消毒输入。非常好吗?
在任何.NET库中都有等价的吗?
如果没有,任何人都可以链接到任何代码示例或库吗?
答案 0 :(得分:11)
试试这个。
var encodedHtml = HttpContext.Current.Server.HtmlEncode(...);
答案 1 :(得分:9)
答案 2 :(得分:4)
不知道是否有确切的替换,但有一个方法HtmlUtility.HtmlEncode
用它们的HTML等价替换特殊字符。近亲为HtmlUtility.UrlEncode
,用于呈现网址。您还可以使用RegularExpressionValidator
,RangeValidator
和System.Text.RegularExpression.Regex
等验证程序控件来确保获得所需内容。
答案 3 :(得分:2)
实际上,您可能想尝试这种方法:
HttpUtility.HtmlAttributeEncode()
为什么呢?引用HtmlAttributeEncode page at MSDN docs:
HtmlAttributeEncode方法仅将引号(“),&符号(&)和左尖括号(<)转换为等效的字符实体。它比HtmlEncode方法快得多。
答案 4 :(得分:0)
除了给定的答案之外: 使用Razor view engine(ASP.NET中的默认视图引擎)时,使用' @'显示值的字符将自动编码显示的值。这意味着您不必使用编码。
另一方面,当您不希望对文本进行编码时,您必须明确指定(使用@Html.Raw)。在我看来,从安全的角度来看,这是一件好事。