2009-12-22 84 views
14

我正在尋找一個html消毒器,我可以調用每個API來消毒從我的web應用程序獲取的字符串。有沒有一些有用的易於使用的庫可用?有人知道可能有一兩個?用於HTML消毒的庫

我不需要太大的東西,它只需要找到未關閉的標籤並關閉它們即可。

回答

10

JTidy可能會幫助你。

+0

是國際直撥電話,jTidy幫我在這裏。感謝分享。 – onigunn 2009-12-23 08:40:29

24

https://github.com/OWASP/java-html-sanitizer現在被標記爲可供生產使用。

用Java編寫的快速且簡單的配置HTML Sanitizer,可讓您在Web應用程序中包含由第三方編寫的HTML,同時保護XSS不受影響。

您可以使用prepackaged policies

Sanitizers.FORMATTING.and(Sanitizers.LINKS) 

tests告訴你如何配置自己的輕鬆:

new HtmlPolicyBuilder() 
    .allowElements("a") 
    .allowUrlProtocols("https") 
    .allowAttributes("href").onElements("a") 
    .requireRelNofollowOnLinks() 

或編寫自定義策略,做這樣的事情改變h1 s到div小號具有一定的等級:

new HtmlPolicyBuilder() 
    .allowElements("h1", "p") 
    .allowElements(
     new ElementPolicy() { 
      public String apply(String elementName, List<String> attrs) { 
      attrs.add("class"); 
      attrs.add("header-" + elementName); 
      return "div"; 
      } 
     }, "h1")) 
+0

該庫提供了良好的第一印象:有文檔記錄和乾淨的API。 – 2013-06-28 05:21:16

+0

我使用這個庫,但它也刪除嵌入式iframe。有沒有什麼辦法可以添加iframe,我有真正的用例,比如添加嵌入的youtube視頻或slideshare演示文稿。我怎麼可以允許這樣的嵌入式iframe? – 2014-08-16 16:09:40

+1

@ usero1,是的,你可以'allowElements(「iframe」)'。 – 2014-08-16 20:39:15