【问题标题】:Anti XSS support in ASP.net Vs AntiXss LibASP.net 和 AntiXss 库中的 Antixss 支持
【发布时间】:2010-08-09 06:38:09
【问题描述】:

ASP.net 提供的 XSS(跨站点脚本)支持与 AntiXss 有何不同。 AntiXss 是一个微软库,用于保护您的站点免受 XSS 攻击。这两个 API 看起来几乎相似,并且看起来可以通过在代码文件中执行查找替换轻松地将它们从一个切换到另一个。

哪一个可以提供更高的 XSS 安全性?是否建议使用 ASP.net 提供的内在支持?

【问题讨论】:

    标签: asp.net antixsslibrary xss


    【解决方案1】:

    有几个不同之处。首先微软AntiXss库使用白名单编码,这意味着所有字符都被编码,除了所有已知安全的字符。 ASP.NET 的标准编码机制是黑名单。例如,对于 HTML 编码,它只编码 4 个字符:<>&"(例如,它不编码单引号)。看看this SO answer这会出什么问题。

    另一个区别是基本的 ASP.NET 编码(使用HttpUtility)只能编码 HTML 和 URL。 AntiXss 还允许对 HTML 属性和 JavaScript 文本进行编码。在标准 ASP.NET 中没有安全的方法。

    【讨论】:

    • 如果我只寻找 html 和 url 编码,那么使用 ASP.net 内在支持而不是创建对 AntiXSS 的依赖是否安全?你有什么建议。
    • 根据定义,白名单编码比黑名单编码更安全,因此使用AntiXss 库是明智的。但是,当您使用 ASP.NET 4.0 时,您可以在使用 HttpUtility.HtmlEncode 方法时让框架使用 AntiXss 库。这使您免于直接依赖于该库,并允许整个 ASP.NET 控件堆栈使用该库。有关更多信息,请参阅此博客文章:idunno.org/archive/2010/04/07/…
    • 您应该注意,实现 4.0 类仍然意味着您必须拥有依赖项。尽管该框架确实具有 HtmlAttribute 编码并且从 4.0 开始具有 Javascript 编码,但它们仍然使用黑名单而不是白名单。当然这意味着框架版本可以更快,但 AntiXSS 应该更安全。
    • 是的,吹镖是对的。 ASP.NET 4.0 中的HttpUtility 还包含HtmlAttributeEncodeJavaScriptStringEncode,但由于某种原因,HttpEncoder 类缺少JavaScriptStringEncode 方法。因此,HttpUtility 的 javascript 编码将始终是黑名单编码。
    【解决方案2】:

    您可能要记住的一件事是发布周期; HttpUtility 内置的编码只能在新版本的 ASP.NET 发布时更新。如果有人在 HttpUtility 发布后的第二天提出了针对它的 XSS 攻击,那么在发布新版本的 ASP.NET 之前,您的应用程序很容易受到攻击。 AntiXSS 的发布周期(快得多),这意味着随着新攻击的出现,团队可以更快地对其做出反应并发布更新的 AntiXSS 来防御它们。

    【讨论】:

      猜你喜欢
      • 2016-10-21
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-26
      • 1970-01-01
      相关资源
      最近更新 更多