如何在ASP.NET 4.5中使用AntiXSS库

时间:2016-11-28 16:52:52

标签: asp.net xss

我已将应用程序从 Asp.Net 3.5 升级到 Asp.Net 4.5 。我见过很多关于使用AntiXSS库的优点。到目前为止,我还没有看到如何使用它。

建议在web.config中启用它,如下所示:

<httpRuntime ... 
      encoderType="System.Web.Security.AntiXss.AntiXssEncoder, System.Web, 
      Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

我想知道在web.config中启用库是我唯一需要做的还是编码来自 TextBoxes 的输入值?

感谢您的帮助

修改

我们说,我有一个这样的文本框:

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

我应该在代码隐藏中对输入进行编码:

string value = SomeEncodeMethod(TextBox1.Text)

我需要这样做吗?

2 个答案:

答案 0 :(得分:1)

.NET MVC中的Razor(以及aspx中的<%:标记)自动将值编码为html上下文。这意味着当您使用Razor在cshtml中执行@myVar时,任何<将变为&lt;"将变为&quote;,依此类推。但默认情况下它使用黑名单,只编码几个字符,只留下其他所有字符。

如果您按照问题中的说明切换到AntiXSS,则此默认编码器将更改为AntiXSS。主要的好处是AntiXSS是一个白名单编码器,它有一个可以单独保留的字符列表(主要是字母和数字),其他一切都是编码的。这稍微更安全,可能会阻止一些本来可能发生的攻击。<​​/ p>

您需要注意,此编码并不总是足够的。要防止XSS,您需要为正确的上下文选择正确的编码。对于html上下文(主要是html属性值),默认编码也可以。但是,对于Javascript上下文,确定。例如,在使用默认或AntiXss html编码器的cshtml中,这很容易受到XSS的攻击:

<script>
    var myVar=@myVar;
</script>

为了确保安全,您需要将其编码为一个Javascript上下文,其中JavaScriptEncode()位于AntiXss 中,将其置于引号(')之间。请注意,如果没有引号,它仍然容易受到XSS的攻击。<​​/ p>

答案 1 :(得分:0)

如何在我们的项目中使用AntiXSS库。

首先,我们需要从此位置下载AntiXss 4.2.1.msi

https://www.microsoft.com/en-us/download/details.aspx?id=28589

然后安装它,然后从下面的loaction复制AntiXSSLibrary.dll(它将在安装后存储)然后我们可以在我们的项目中使用它。

C:\ Program Files(x86)\ Microsoft Information Security \ AntiXSS Library v4.2 \ NET40