[英]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.