2010-04-24 57 views
0

我正在建立一個網站,我有一些HTML片段被存儲到數據庫中,我一直在閱讀,在運行時插入HTML構成安全風險使用任何html標籤的InnerHTML屬性和runat服務器。在asp.net中輸出html在運行時

所以,我的問題是有沒有其他的方法來安全地顯示html代碼,並且不會帶來安全風險,並且最好假定任何給定頁面上的任何文本框都是危險的,並且使用Server處理文本框中的文本。 HtmlEncode之前,我將它存儲到數據庫?

乾杯

回答

0

你顯示它之前,您應該始終HtmlEncode任何用戶生成的數據(以避免XSS攻擊)。

在asp.net 4.0他們有一個新的服務器端輸出標籤自動對數據進行編碼:

<%: "text to encode"%> 

這是不是:

<%= "text that will not be encoded"%> 

這仍然是各地的向後兼容性。

+0

如果我使用HtmlEncode方法,它會呈現我的HTML代碼作爲文本,我需要實際顯示HTML代碼,如果它被寫在HTML頁面 – madness800 2010-04-24 12:53:10

+0

@ madness800 - 那麼你不能使用這種方式編碼。如果HTML是由用戶提供的內容,您可能需要清理HTML。查看來自microsoft的反xss庫 - http://msdn.microsoft.com/en-us/library/aa973813.aspx – Oded 2010-04-24 12:56:17