繁体   English   中英

在WebControl中使用`<%=`是一个坏主意

[英]Is it a Bad idea to use `<%=` in a WebControl

最近我开始在我的Web控件中使用<%= 通常我会在Code Behind中设置String属性,然后将它们吐出到表单上。

这是一个坏主意吗?

例如。

代码背后:

属性:

public string TheTitle { get; set; }
public string TheBody { get; set; }
public ContentItem TheContent { get; set; }
public string ContentId { 
  get 
    { return "content" + (TheContent != null) ? TheContent.Id.ToSTring() : "0"; }
}

Page_Load中:

TheTitle = TheContentItem.Title;
TheBody = TheContentItem.Body;

在页面上:

<div id='<%= ContentID %>'>    

  <h2 class='title'><%= TheTitle ?? "No Title" %></h2>
  <p><%= TheBody %></p>

</div>

只有在未验证数据时才会出现问题。

使用.NET 4的<%: TheBody %>语法是编码可能不受信任的数据的有效方法。 在早期版本的框架中,您可以使用<%= HttpUtility.HtmlEncode(TheBody) %>来达到相同的效果。

如果数据来自用户输入是很糟糕的,因为您的站点容易受到XSS的攻击。

不,这不是问题*因为它将限制在你的控制范围内。 您不必担心在您的情况下有任何冲突,但如果您使用ID写出服务器控件,则可能会遇到问题。

如何使用它,确定(*假设您在将数据分配给变量之前已经清理了数据)。 请记住,有时可能会出现重复ID,控件,脚本等问题......

编辑:在将其分配给HttpUtility.HtmlEncode之前,您可以使用HttpUtility.HtmlEncode或者如果您使用ASP.NET 4,则可以使用<%:语法,具体取决于您输出的内容。 今年秋天的规则和aspx一样,没关系,但你需要小心。 这也是ASP.NET MVC的使用量。 可以使用<%=<%:来提升视图<%:显然,对任何HTML本身使用任何类型的编码都没有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM