Проблема с кодировкой HTML в asp.net - PullRequest
0 голосов
/ 08 октября 2011

У меня есть буквальный элемент управления, используемый для отображения HTML, поступающего из БД.Я столкнулся с некоторыми проблемами XSS и реализовал Anti-XSS Security Runtime Engine (SRE) для автоматического кодирования всей HTML-разметки.например,

DB: <p align="center"></p>

Anti-XSS кодирует его как:

&#60;p align&#61;&#34;center&#34;&#62;&#160;&#60;&#47;p&#62

Однако, когда я устанавливаю текстовое свойство буквального содержимого из кода позади, яожидал, что буквальный элемент управления ДЕКОДирует соответствующий HTML и отображает отрендеренную версию.Вместо этого он показывает версию ENCODED.

Таким образом, буквальный элемент управления отображает - <p align="center"></p> postrender.Я понимаю, что это Anti-xss в действии, но как я могу получить буквальный элемент управления, чтобы отображать отображаемый HTML вместо разметки?

ASPX - <asp:Literal ID="ltPageContent" runat="server"></asp:Literal>
Code behind on page load - ltPageContent.Text = getPageContent("home")'Gets HTML from DB

Я что-то упустил здесь?

Ответы [ 2 ]

1 голос
/ 08 октября 2011

Не принимая во внимание риски XSS, вы можете забыть LiteralControl здесь и использовать вместо него встроенные коды:

ASPX:

<%= Server.HtmlDecode(YOUR_STRING) %>
0 голосов
/ 25 марта 2014

Вы также можете использовать свойство «Mode» со значением «PassThrough»:

<asp:Literal ID="ltPageContent" runat="server" Text="Html Here" 
             Mode="PassThrough" />

Я советую проверить XSS, прежде чем данные будут переданы сюда.

...