如何以安全的方式呈现单引号

Dej*_*jas 2 asp.net-mvc razor asp.net-mvc-3

我在教程视频中看到,我们应该在视图中使用Html.Encode来防止恶意注入.但是,当我编码的文本包含'字符(例如Dog's)时,浏览器中的输出是Dog#39; s.我原以为每个有潜在危险的角色都会被重新映射到浏览器正确渲染的安全​​代码.这不是这种情况吗?我如何才能以HTML安全的方式显示在浏览器中?

Alx*_*ndr 6

@在剃刀自动编码为你,这意味着你可能做了双重编码.例:

@Html.Encode("This is \"safe\"")
Run Code Online (Sandbox Code Playgroud)

或多或少是一样的

@{Response.Write(Html.Encode(Html.Encode("This is \"safe\"")));}
Run Code Online (Sandbox Code Playgroud)

Dunno,如果最后一个在Razor工作.


Jas*_*ost 5

如果您正在使用ASP.NET MVC 2 <%:%>已经为您编码了值在Razor(MVC 3)中@为您编码值,因此您不需要将输出包装在Html.Encode中

确保您不是双重编码