2009-12-22 9 views
14

Szukam sanitizer html, który mogę wywołać za pomocą interfejsu API w celu odkażenia ciągów, które otrzymuję od mojego webappa. Czy są dostępne niektóre przydatne, łatwe w użyciu biblioteki? Czy ktoś wie, może jeden lub dwa?Libs do sanityzacji HTML

Nie potrzebuję czegoś dużego, wystarczy znaleźć niezamknięte znaczniki i je zamknąć.

Odpowiedz

10

JTidy może Ci pomóc.

+0

Tak IDD, jTidy mi pomóc tutaj. Dziękuję za udostępnienie. – onigunn

24

https://github.com/OWASP/java-html-sanitizer jest teraz oznaczone gotowy do użytku produkcyjnego.

Szybki i łatwy do skonfigurowania program do oczyszczania kodu HTML napisany w języku Java, który umożliwia dołączanie kodu HTML utworzonego przez osoby trzecie w aplikacji internetowej, jednocześnie chroniąc XSS.

Można użyć prepackaged policies

Sanitizers.FORMATTING.and(Sanitizers.LINKS) 

lub tests pokazać w jaki sposób można skonfigurować własny łatwo:

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

lub napisać własne polityki do robienia rzeczy, jak zmiana h1 s do div s z określoną klasą:

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

Ta biblioteka robi dobre pierwsze wrażenie: dobrze udokumentowana i czysty interfejs API. –

+0

Używam tej biblioteki, ale również usuwa osadzone elementy iframe. Czy jest jakiś sposób, aby zezwolić na dodawanie ramek iframe? Mam rzeczywiste przypadki użycia, takie jak dodanie osadzenia filmu z YouTube lub prezentacji slajdów. Jak mogę zezwolić na takie osadzone elementy iframe? –

+1

@ usero1, Tak, możesz 'allowElements (" iframe ")'. –