【问题标题】:How to use AntiXSS library in ASP.NET 4.5如何在 ASP.NET 4.5 中使用 AntiXSS 库
【发布时间】:2016-11-28 16:52:51
【问题描述】:

我已将应用程序从 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)

我需要这样做吗?

【问题讨论】:

  • 我的情况类似,看来haacked.com/archive/2010/04/06/… 是我能找到的最好的了
  • 感谢您的链接。似乎 Phil Haack 刚刚创建了这个类,但我没有看到他在哪里编码了来自输入控件的任何值。我不知道我是否应该假设唯一要做的就是启用 web.config 中的库,因为它现在是 asp.net 框架的一部分。
  • 启动一个简单的 POC,您所做的配置应该可以工作。当我回到这个任务时,我会自己尝试。祝你好运!

标签: asp.net security xss


【解决方案1】:

.NET MVC 中的 Razor(以及 aspx 中的 &lt;%: 标记)自动将值编码为 html 上下文。这意味着当你用 Razor 在 cshtml 中执行@myVar 时,任何&amp;lt; 都将变为&amp;lt;" 将变为&amp;quote; 等等。但默认情况下,它使用黑名单,只对几个字符进行编码,不理会其他所有内容。

如果您按照问题中所述切换到 AntiXSS,则此默认编码器将更改为 AntiXSS。主要的好处是 AntiXSS 是一个白名单编码器,它有一个可以单独放置的几个字符的列表(主要是字母和数字),其他所有内容都被编码。这会稍微安全一些,并且可能会阻止一些原本可能发生的攻击。

您需要注意,尽管这种编码并不总是足够的。为了防止 XSS,您需要为正确的上下文选择正确的编码。对于 html 上下文(以及大多数情况下的 html 属性值),默认编码是可以的。但是,对于 Javascript 上下文,不是可以的。例如,在带有默认或 AntiXss html 编码器的 cshtml 中,这很容易受到 XSS 的攻击:

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

为了确保安全,您需要在 AntiXss 中使用 JavaScriptEncode() 将其编码为 Javascript 上下文将其放在引号之间 (')。请注意,如果没有引号,它仍然容易受到 XSS 的攻击。

【讨论】:

  • 嘿@Gabor Lengyel。谢谢你的洞察力。所以底线,你的建议是仍然在 aspx 文件中编码文本框的值。这主要是我关心的问题。请看编辑。
  • 嗯,好的。您不需要进一步编码,默认情况下 asp:TextBox 会处理这些。您可以通过在文本框中输入诸如 &lt;script&gt; 之类的内容来尝试此操作(即使关闭了请求验证,这是除了输出编码之外的另一道防线)。
【解决方案2】:

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

首先我们需要从这个位置下载 AntiXss 4.2.1.msi

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-21
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多