我已将应用程序从 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)
我需要这样做吗?
答案 0 :(得分:1)
.NET MVC中的Razor(以及aspx中的<%:
标记)自动将值编码为html上下文。这意味着当您使用Razor在cshtml中执行@myVar
时,任何<
将变为<
,"
将变为"e;
,依此类推。但默认情况下它使用黑名单,只编码几个字符,只留下其他所有字符。
如果您按照问题中的说明切换到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