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