Это плохая идея использовать `<% =` в webcontrol
-
01-10-2019 - |
Вопрос
Недавно я начал использовать <%=
чаще в моем веб-контролях. Как правило, я установлю строковые свойства в коде позади, а затем выпивать их на форму.
Это плохая идея?
например.
Код позади:
Характеристики:
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.
Нет, это не проблема *, потому что она будет столена для вашего контроля. Вам не нужно беспокоиться о чем-либо противоречившихся в вашем случае, но если вы пишете серверные элементы управления с идентификаторами, которые вы можете столкнуться с проблемами.
Как ваше его использование, OK (* Предполагая, что вы очистили данные, прежде чем назначить его вашу переменную). Просто имейте в виду, что есть времена, когда это может быть проблемой с дублированием IDS, элементов управления, сценариев и т. Д.
Редактировать: Прежде чем назначить его вашу валюту, вы можете использовать HttpUtility.HtmlEncode
или если вы используете ASP.NET 4, вы можете использовать <%:
Синтаксис в зависимости от того, что вы выводят. Это подпадает под те же правила, что и делает его ASPX, все в порядке, но вам просто нужно быть осторожным. Это также, насколько используется ASP.NET MVC. Просмотры могут быть лишены <%=
а также <%:
Очевидно, что с использованием любого типа кодирования на любой HTML сам не будет полезен.