我有一個文字控件用於顯示來自數據庫的HTML。我確實遇到了一些XSS問題,並實施了Anti-XSS安全運行時引擎(SRE)來自動編碼所有的html標記。例如asp.net中的HTML編碼問題
DB:<p align="center"></p>
防XSS編碼它:
<p align="center"> </p>
然而,當我設置的從代碼文本內容text屬性後面,我期待的是字面控制將解碼正確的html並顯示呈現的版本。相反,它顯示的是ENCODED版本。
因此,文字控制顯示 - <p align="center"></p>
postrender。我知道這是反xss的行動,但我怎樣才能獲得文字控制顯示呈現的HTML而不是標記?
ASPX - <asp:Literal ID="ltPageContent" runat="server"></asp:Literal>
Code behind on page load - ltPageContent.Text = getPageContent("home")'Gets HTML from DB
我在這裏錯過了一些簡單的東西嗎?
謝謝,但我不希望在aspx中有任何代碼。任何解決方案在代碼隱藏? –
好吧,你需要一個服務器端的html控件作爲你的容器,並將你的html字符串設置爲它的InnerHtml屬性。例如,將
放入您的aspx頁面,然後後面的代碼可以是「container.InnerHtml = Server.HtmlDecode(YOUR_STRING);」 –