我的代码据说已被清除了跨站点脚本漏洞。
例如:
<%# Eval("Name") %> (<%# Eval(" FriendlyId") %>)
被修改为:
<%#: Eval("Name") %> (<%# Eval(" FriendlyId") %>)
和
<%= string.IsNullOrEmpty(SelectedPlan.VisionPlan.PlanCategory) ? "-" : SelectedPlan.VisionPlan.PlanCategory %>
被修改为:
<%: string.IsNullOrEmpty(SelectedPlan.VisionPlan.PlanCategory) ? "-" : SelectedPlan.VisionPlan.PlanCategory %>
如何简单地添加这些冒号会阻止发生跨站点脚本攻击?
答案 0 :(得分:2)
<%: >
是ASP.NET 4中引入的HTML编码输出的新语法。如果没有此语法,则必须编写
<%= Server.HtmlEncode(Model.Content) %>
可以使用新语法以更易读和更简洁的方式表达相同的内容:
<%: Model.Content %>
Scott Guthrie解释了更多细节:
新的
<%: %>
语法提供了一种简洁的方法来自动对内容进行HTML编码,然后将其呈现为输出。它允许您使代码更简洁,并轻松检查/验证您始终是HTML编码整个站点的内容。这有助于保护您的应用程序免受跨站点脚本注入(XSS)和HTML注入攻击。
有关详细信息,请参阅 New <%: %> Syntax for HTML Encoding Output in ASP.NET 4 (and ASP.NET MVC 2) 。