ASP.NET MVC中的HTML编码

桑托什·库马尔·帕特罗

我在ASP.NET MVC 2项目的视图(Demo.aspx)中具有以下代码:

Demo.aspx:

<% if (!Model.IsValid) { %><%= Model.FirstName %> - <% } %><%= Model.LastName %> -

在将项目从ASP.NET MVC2迁移到ASP.NET MVC3的过程中,我试图将其转换为剃刀视图(Demo.cshtml)。经过一些分析并遵循以下URL:http : //haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx/,用于将Web表单迁移到razor视图,我起草了以下等效代码在剃刀视图中:

Demo.cshtml:

@if (!Model.IsValidName)
        { @Html.Raw(Model.FirstName)
            @Html.Raw("-")
        }
        @Html.Raw(Model.LastName)
        @Html.Raw("-")

但是通过使用转换工具:http : //visualstudiogallery.msdn.microsoft.com/d2bfd1ca-9808-417c-b963-eb1ea4896790,我得到了以下代码:

Demo.cshtml:

@if (!Model.IsValidName)
           { @Model.FirstName
        @Html.Raw("-")
         } @Model.LastName
        @Html.Raw("-")

任何人都可以帮助确认以上哪一项是正确的吗?

扁桃体

我建议第二种方法:

@if (!Model.IsValidName)
           { @Model.FirstName
        @Html.Raw("-")
         } @Model.LastName
        @Html.Raw("-")

这样做的原因是出于安全目的。

例如,这@Model.FirstName将防止XSS攻击,因为@Html.Raw(Model.FirstName)它绕过了编码,并且允许用户更新自己的FirstName属性成为可能

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章