2010-01-20 58 views
2

我確定這是一個常見問題...ASP.NET控件中的安全HTML

我希望用戶能夠輸入和格式化描述。

現在我有一個多行文本框,他們可以輸入純文本。這將是很好,如果他們可以做一個小格式的HTML。這是我必須處理的事情嗎?解析輸入並只驗證是否存在諸如<ul><li><b>等「安全」標籤?

我將此說明保存在SQL數據庫中。爲了正確顯示這個HTML,我需要在頁面上使用一個文字,然後將它轉儲到適當的區域,或者對於我正在做的事情有更好的控制嗎?

此外,是否有像SO上的用戶輸入/小編輯的自由控制?

回答

4

查看AntiXSS庫。當前版本(3.1)有一個名爲GetSafeHtmlFragment的方法,可用於執行您正在討論的解析類型。

Literal可能是輸出此HTML的正確控制方式,因爲Literal只是輸出所放入的內容並讓瀏覽器呈現任何HTML。標籤將輸出包括標籤的所有標記。

AJAX控制工具包有text editor

2

您需要檢查正在輸入的內容標籤,以避免交叉側腳本攻擊等。您可以使用正則表達式來檢查任何標籤在你的「白名單」上,並且刪除任何其他人。

您可以查看此link獲取富文本編輯器列表。

0

除了其他答案,您還需要在包含文本框的頁面的@Page指令中設置ValidateRequest =「false」。這會關閉標準ASP.NET驗證,以防止HTML從文本框中發佈。然後你應該使用你自己的驗證程序,比如@PhilPursglove提到的一個。