2010-09-26 109 views

回答

8

它呼吁

更多信息,请参见ScottGu's blog的值的HTMLEncode。

+0

感谢大家的帮助 – 2010-09-26 18:21:07

+0

谢谢。有时候我遇到了一个我曾经有过的问题,但从来没有去问过... – 2010-09-26 19:34:49

2

<%: %>将是优选的,因为它会自动HTML编码上述值,但它只能在.NET 4

4

它们不是相同的:

<%=%> is the same as `Response.Write` 
<%:%> adds `Server.HtmlEncode` to `Response.Write` 

因此,<%:%>优选(因为添加.NET 4.0),因为它在输出字符串之前添加了对输出进行编码的安全措施。

如果您使用的是.NET 3.5或之前的版本,最佳做法是使用<%=Server.HtmlEncode(val)%>

+0

是Server.HtmlEncode和Html.Encode相同的东西? – 2010-09-26 18:52:45

+0

@Praveen Prasad - 我相信他们应该做同样的工作,但在实践中有点不同(不足以导致问题,但如果内存服务,其中一个比另一个更严格)。 – Oded 2010-09-26 18:57:48

2
<%: someString %> 

就像

<%= HttpUtility.HtmlEncode(someString) %> 
2

您可以使用“<%:”当你需要消毒的字符串(即从东西是由一个用户inputed,可以是潜在的恶意)

基本上< & =只写入字符串,因为它是HTML和<%:与写作相同<%= Html.Encode(“something”)%>

+0

<%: %>通常更好。在Razor视图引擎中,微软表示@使得@等于<%: %>。并且您需要使用@ Html.Raw(value)来获得等效的<%= %>行为。 – 2012-09-30 18:11:38