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

时间:2011-03-06 22:27:59

标签: asp.net-mvc asp.net-mvc-3 razor

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

2 个答案:

答案 0 :(得分:6)

Razor中的@会自动为您编码,这意味着您可能进行了双重编码。 例如:

@Html.Encode("This is \"safe\"")

或多或少与

相同
@{Response.Write(Html.Encode(Html.Encode("This is \"safe\"")));}

Dunno,如果最后一个在Razor中工作的话。

答案 1 :(得分:5)

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

确保您不是双重编码