这些跨站点脚本修复如何工作?

时间:2015-11-24 14:30:09

标签: c# xss

我的代码据说已被清除了跨站点脚本漏洞。

例如:

<%# Eval("Name") %> (<%# Eval(" FriendlyId") %>)

被修改为:

<%#: Eval("Name") %> (<%# Eval(" FriendlyId") %>)

<%= string.IsNullOrEmpty(SelectedPlan.VisionPlan.PlanCategory) ? "-" : SelectedPlan.VisionPlan.PlanCategory %>

被修改为:

<%: string.IsNullOrEmpty(SelectedPlan.VisionPlan.PlanCategory) ? "-" : SelectedPlan.VisionPlan.PlanCategory %>

如何简单地添加这些冒号会阻止发生跨站点脚本攻击?

1 个答案:

答案 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)