ASP.net 提供的 XSS(跨站点脚本)支持与 AntiXss 有何不同。AntiXss 是一个微软库,用于保护您的站点免受 XSS 攻击。这两个 API 看起来几乎相似,并且看起来可以通过在代码文件中进行查找替换轻松地将它们从一个切换到另一个。
哪一个提供更多针对 XSS 的安全性?是否建议使用 ASP.net 提供的内在支持?
ASP.net 提供的 XSS(跨站点脚本)支持与 AntiXss 有何不同。AntiXss 是一个微软库,用于保护您的站点免受 XSS 攻击。这两个 API 看起来几乎相似,并且看起来可以通过在代码文件中进行查找替换轻松地将它们从一个切换到另一个。
哪一个提供更多针对 XSS 的安全性?是否建议使用 ASP.net 提供的内在支持?
有几个不同之处。首先微软AntiXss
库使用白名单编码,这意味着所有字符都被编码,除了所有已知安全的字符。ASP.NET 的标准编码机制是黑名单。例如,对于 HTML 编码,它只编码 4 个字符:<
、、>
和(例如&
,"
它不编码单引号)。例如,看看这个 SO answer这可能会出现什么问题。
另一个区别是基本的 ASP.NET 编码(使用HttpUtility
)只能编码 HTML 和 URL。AntiXss
还允许编码 HTML 属性和 JavaScript 文本。在标准 ASP.NET 中没有安全的方法。
您可能要记住的一件事是发布周期;HttpUtility 内置的编码只能在新版本的 ASP.NET 发布时更新。如果有人在 HttpUtility 发布后的第二天提出了针对它的 XSS 攻击,那么在发布新版本的 ASP.NET 之前,您的应用程序很容易受到攻击。AntiXSS 的发布周期(快得多),这意味着随着新攻击的出现,团队可以更快地对它们做出反应并发布更新的 AntiXSS 来防御它们。