如何使用AntiXSS但保持输出可读?

时间:2011-10-15 21:02:31

标签: .net security antixsslibrary

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

问题是它编码的次数超出了我的要求。例如,它对冒号“:”进行编码。

有没有办法使用HtmlEncode,但不是某些字符?

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

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

1 个答案:

答案 0 :(得分:1)

如果您在屏幕上看到编码结果,而您的评论似乎表明您是双重编码。 &安培;#58;是冒号,这将是AntiXSS的输出,但之后的东西是编码&到& amp;

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

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