使用.net 4,有一个新的<%:%>脚本外壳类似于<%=%>但是html编码。人们鼓励使用这种新语法。
我的问题是,<%:%>是否可以更好地防范XSS或使用Microsoft Anti XSS库?
一位微软安全人员曾告诉我,不要只使用HTML Encode,因为它不能很好地保护,而且我应该始终使用Anti XSS库(或其他库)。使用<%:%>?时仍然如此吗?或者我可以自信地使用<%:%>知道它会像人们说的那样保护我的应用程序免受XSS攻击吗?
答案 0 :(得分:9)
HttpUtility.HtmlEncode
使用黑名单(排除原则)编码方法,这可能会让未来新发现漏洞的门变得半开。 Anti-XSS library (现在称为Web保护库,包括缓解SQL注入的代码)使用白名单方法(包含原则)进一步关闭门并应提供更好的安全
<%: ... %>
只是<%= Server.HtmlEncode(string) %>
的快捷方式,因此可以提供应用程序中使用的编码器的安全性。
您可以使用新的<%: ... %>
语法使用您喜欢的任何编码器,Phil Haack在 hooking up the Anti-Xss library as the default encoder 上发表了精彩的帖子。请记住,目前Anti-XSS库3.1需要运行中等信任 - 这是为将来的版本解决的问题。
答案 1 :(得分:1)
新语法只应用于转义HTML中的原始文本内容。 编辑:和属性。
对于属性, Javascript和其他上下文,您仍应使用Anti-XSS库,