2013-05-06 46 views
0

我有文本區域,用戶可以在其中輸入一些描述。我需要將此輸入與換行符一起保存到數據庫中。用戶也可以輸入一些html標記,但該標記應該是純文本。保存HTML標記到數據庫的文本

例如用戶輸入這樣的文字:

a b(click enter) 
c d <p>f</p> 

什麼是最好的方式保存該文本數據庫。

1. "a b<br/>c d <p>f</p>" 
2. "a b \r\n c d <p>f</p>" 
3. "a b &lt;br/&gt;c d &lt;p&gt;f&lt;/p&gt; " 

它將顯示爲不是HTML。

+2

第一個,你可以直接在html頁面顯示它。與其他人一樣,你需要用PHP解析並替換字符。所以我認爲第一個更好。 – Alarid 2013-05-06 14:51:37

+0

這取決於你想用它做什麼。如果它將顯示爲HTML,那麼第一個就足夠了。但是,如果您確定不需要HTML,那麼第三個選項是最好的。 – Jonathan 2013-05-06 14:54:24

+0

以上2條評論將導致xss攻擊 – maxisam 2014-02-21 20:16:16

回答

0

這是圍繞轉義字符的討論。簡單的答案是:

http://msdn.microsoft.com/en-us/library/w3te6wfz.aspx

如果您是使用JavaScript通過Web服務器保存這一點,你可能要滾你自己的編碼器:

HTML-encoding lost when attribute read from input field

周圍編碼更大的對話是非常重要的,你會在哪裏得到編碼器和解碼器?你會只打HTML,還是應該包含JS?如果您有用戶將數值添加到您的數據庫,我會。

此外,您仍然希望清理輸入,具體取決於如何將數據添加到數據庫以防止SQL注入。

HTH

+0

否定。 HTMLencode仍然存在問題。你不能在標籤和單模文本框中使用HtmlEncode。最好的方法仍然是:http://stackoverflow.com/questions/4883613/asp-net-text-with-linebreak-from-multi-line-textbox-to-save-in-a-database – 2015-10-06 19:04:01