AntiXss库运行不正常

时间:2011-03-31 09:33:05

标签: asp.net-mvc-3 xss asp.net-4.0 antixsslibrary

我正在使用AntiXssLibrary 4.0,但它没有转义\ x3c。我的错是什么?

我已根据此处http://haacked.com/archive/2010/04/06/using-antixss-as-the-default-encoder-for-asp-net.aspx将AntiXss配置为默认HttpEncoder,并在encoderType中设置httpRuntime的{​​{1}}。

我还创建了从web.config派生的AntiXSSEncoder,而不是弃用

HttpEncoder

我用它来覆盖output.Write(AntiXss.HtmlEncode(value)); 方法:

HtmlEncode

目前,如果我浏览这个:

output.Write(Encoder.HtmlEncode(value));

警报“haaha”显示AntiXss库无法正常工作。我只想在第13分钟看到这个节目http://channel9.msdn.com/Events/MIX/MIX10/FT05

要确认我还将其设置为动作:

http://localhost:28453/?k=sss\x3cscript\x3ealert%28\x27haaha\x27%29;\x3c/script\x3e

然后在视图中我说:

    public ActionResult Index(string k)
    {
        ViewBag.k = k;
        ViewBag.j = Microsoft.Security.Application.Encoder.HtmlEncode(k);
        return View();
    }

在浏览器中,值a和b相同,表明AntiXss运行不正常!

<script type="text/javascript">
    $(document).ready(function () {
        var a = '@ViewBag.k';
        var b = '@ViewBag.j';
    $('.resultName:first').html(b);
});
</script>

更新:只有当我使用<script type="text/javascript"> $(document).ready(function () { var a = 'sss\x3cscript\x3ealert(\x27haaha\x27);\x3c/script\x3e'; var b = 'sss\x3cscript\x3ealert(\x27haaha\x27);\x3c/script\x3e'; $('.resultName:first').html(b); }); </script> 作为编码器类型时才会发生这种情况。当我评论这个并重建时。单引号'被MVC逃脱了。似乎禁用了AntiXss!我错过了什么吗?我希望这个有用,因为我想像\ x3c一样也像视频那样进行转义。

AntiXssEncoder

1 个答案:

答案 0 :(得分:7)

你是对的,因为4.0 .NET已在HTMLEncode中编码撇号,而AntiXSS则没有,因为严格来说,HTML字符串不是必需的,仅用于属性字符串。

现在,一旦你将AntiXSS作为假设不再适用的编码器进行交换,人们就会毫不犹豫地在任何地方应用Html编码。

因此,当我推送下一版本的AntiXSS时,它将始终对撇号进行编码。