0

我正在使用 Microsoft 的 AntiXSS 库对网页上显示的内容进行 HtmlEncode。

问题是它的编码比我想要的要多。例如,它对冒号“:”进行编码。

有没有办法进行 HtmlEncode,但不是某些字符?

一个例子是,如果我有一个类似“RE:电子邮件主题行”的字符串,是否可以使用 AntiXSS 库对该字符串进行编码,但不会显示为“RE: 电子邮件主题行”。我希望“:”出现,但仍想对输出进行编码。

更新:问题是我使用的是 Razor 并且“@”已经对输出进行了编码。因此,通过使用“@”和 AntiXSS Html.Encode 调用,我是双重编码。

4

1 回答 1

1

如果您在屏幕上看到您的评论似乎表明的编码结果,那么您就是双重编码。: 是冒号,这将是 AntiXSS 的输出,但之后的东西是将 & 编码为 &

这样做取决于您使用的是什么。如果您使用的是 WebForms,那么默认情况下,一堆控件将对 Text 和其他属性进行编码,停止这取决于控件。如果您使用的是 MVC,则 <%: 在将您传递的内容添加到输出流之前对其进行编码。如果您使用的是 MVC3,您可以替换默认编码器(AntiXSS beta 4.1,或者如果您不想使用 beta 版,您可以自己滚动),或者通过输出HtmlString告诉 MVC 您正在输出已经编码的字符串.

.NET 4.5中,AntiXSS 的核心部分将内置并通过配置开关进行配置。

于 2011-10-16T11:03:50.757 回答