这些跨站点脚本修复程序是如何工作的

本文关键字:何工作 工作 程序 站点 脚本 | 更新日期: 2023-09-27 18:24:03

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

例如:

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

修改为:

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

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

修改为:

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

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

这些跨站点脚本修复程序是如何工作的

<%: >是ASP.NET 4中引入的HTML编码输出的新语法。如果没有这种语法,你将不得不编写

<%= Server.HtmlEncode(Model.Content) %>

使用新语法可以以更可读和一致的方式表达相同的内容:

<%: Model.Content %>

Scott Guthrie解释了更多细节:

新的<%: %>语法提供了一种简洁的方式来自动对内容进行HTML编码,然后将其呈现为输出。它可以让你的代码变得不那么冗长,并且可以轻松地检查/验证你在整个网站上总是对内容进行HTML编码。这可以帮助保护您的应用程序免受跨站点脚本注入(XSS)和HTML注入攻击。

请参阅新建<%:%>ASP.NET 4(和ASP.NET MVC 2)中HTML编码输出的语法了解更多详细信息。