当设置为asp.net中的默认编码器时,确认实际使用了antixss

时间:2015-09-03 21:32:11

标签: asp.net encoding antixsslibrary

我们希望对发送到浏览器的数据进行编码,以帮助防止asp.Net 4应用程序中的XSS。微软的AntiXSS软件很有吸引力,因为它使用白名单而不是黑名单方法。不幸的是,.net Framework 4的版本与.net Framework 4.5+中包含的版本之间的API不同。可以将AntiXSS设置为asp.net网站的默认编码器。

有人会有一个示例XSS,其中httpUtility(或默认编码器)编码输出的方式与AntiXSS不同吗?

我查看了许多XSS示例,到目前为止Antixss已生成与httpUtility提供的输出相同的输出。对于我在Google上发现的示例情况,会发生这种情况。例如,有许多报告称httpUtility不处理单引号,但我输入httpUtility的例子确实编码单引号(appostrophes)。这也是AntiXSS捕获httpUtility(或默认编码器)没有的问题的情况。

由于

麦克

1 个答案:

答案 0 :(得分:1)

我确认使用AntiXSS编码器的方法是使用MarkAsSafe例程将希腊字符标记为安全:

    System.Web.Security.AntiXss.AntiXssEncoder.MarkAsSafe(
        System.Web.Security.AntiXss.LowerCodeCharts.GreekAndCoptic |
        System.Web.Security.AntiXss.LowerCodeCharts.BasicLatin,
        System.Web.Security.AntiXss.LowerMidCodeCharts.None,
        System.Web.Security.AntiXss.MidCodeCharts.None,
        System.Web.Security.AntiXss.UpperMidCodeCharts.None,
        System.Web.Security.AntiXss.UpperCodeCharts.None);

然后我将Unicode字符输入到TextBox中,其中一些字符集标记为安全,一些不是:ΠΠ฿

我观察到当我使用HttpUtility.HtmlEncode(inputText.Text)时,我看到“ΠΠ฿”显示。当我将默认编码器设置为System.Web.Security.AntiXss.AntiXssEncoder时,我现在看到了ΠΠ฿。

这表明antiXss编码器处于活动状态。