7

.net 4 有一个新的 <%: %> 脚本附件,它类似于 <%= %> ,但执行 html 编码。人们鼓励使用这种新语法。

我的问题是,<%: %> 是否可以更好地防止 XSS,或者与使用 Microsoft Anti XSS 库一样好?

一位微软安全人员曾经告诉我不要只使用 HTML 编码,因为它不能很好地保护,我应该始终使用 Anti XSS 库(或其他库)。<%: %> 仍然如此吗?或者我可以自信地使用 <%: %> 知道它会像人们所说的那样保护我的应用免受 XSS 攻击吗?

4

2 回答 2

9

HttpUtility.HtmlEncode使用黑名单(排除原则)方法进行编码,这可能为将来新发现的漏洞打开大门。Anti-XSS 库(现在称为 Web 保护库,也包含用于缓解 SQL 注入的代码)使用白名单方法(包含原则),它进一步关闭了大门,应该提供更好的安全性。

<%: ... %>只是一个快捷方式<%= Server.HtmlEncode(string) %>,因此提供了应用程序中使用的编码器的安全性。

你可以使用任何你喜欢的编码器和新的<%: ... %>语法,Phil Haack 有一篇很棒的文章,介绍了将 Anti-Xss 库连接为默认编码器。请记住,当前 Anti-XSS 库 3.1 需要中等信任才能运行 - 这将在未来的版本中解决。

于 2010-06-28T21:46:16.827 回答
1

新语法应该只用于转义 HTML 中的原始文本内容。 编辑:和属性。

对于属性、 Javascript 和其他上下文,您仍应使用 Anti-XSS 库,

于 2010-06-28T21:43:27.283 回答