2009-01-05 27 views
4

我一直在掃描一些關於清理HTML標記字符串以重新顯示在頁面上的討論(例如博客評論)。在過去,我只是單方面逃脫了重新展示的標記。HTML消毒 - 糟糕的標記?

是否有人知道是否有任何解決方案超越只是刪除「不安全」的標籤?

如果標記無效怎麼辦?例如,您如何防止和未封閉標籤,使其面向在頁面上顯示的所有文本?

看起來像Stackoverflow處理這個。

未封閉'b'標記示例

謝謝。

+0

我認爲這是傑夫喜歡的SO的一部分! – 2009-01-05 20:27:06

回答

4

Stackoverflow使用textile或非常喜歡它。

紡織品或多或少地保證吐出有效的(x)html,改善許多消毒用戶輸入的典型問題。

0

檢查這個代碼:

Sanitize HTML,我認爲StackOverflow上使用它的地方......

的方法來使用基於 白名單從提供的原始 HTML輸入消毒任何潛在的危險 標籤方法,留下「安全」的HTML 標籤。

0

Html Agility Pack可能是一個很好的起點,因爲它聲稱非常容忍格式不正確和格式錯誤的HTML。最重要的是,您可能需要制定一些規則來做進一步的消毒。最後,將獲取的DOM序列化回純HTML代碼。

我遇到了同樣的問題,並在Html Agility Pack之上構建了基於規則的HTML清理程序。它允許您扁平化或移除標籤,例如將標籤變換替換b標籤並限制屬性的使用。如果想要快速完成,請參閱HtmlRuleSanitizer的源代碼,或者獲取NuGet package