2009-12-22 6 views
14

Je suis à la recherche d'un assainisseur html que je peux appeler par API pour désinfecter les chaînes que je reçois de ma webapp. Y a-t-il des bibliothèques utiles et faciles à utiliser? Est-ce que quelqu'un sait peut-être un ou deux?Libs pour la désinfection HTML

Je n'ai pas besoin de quelque chose de grand, il doit juste pouvoir trouver des étiquettes non fermées et les fermer.

Répondre

10

JTidy peut vous aider.

+0

Oui idd, JTidy me aider. Merci d'avoir partagé. – onigunn

24

https://github.com/OWASP/java-html-sanitizer est maintenant marqué prêt à l'emploi de la production.

Un assainisseur HTML rapide et facile à configurer écrit en Java qui vous permet d'inclure du HTML créé par des tiers dans votre application Web tout en protégeant contre XSS.

Vous pouvez utiliser prepackaged policies

Sanitizers.FORMATTING.and(Sanitizers.LINKS) 

ou tests montrer comment vous pouvez configurer votre propre facilement:

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

ou écrire des stratégies personnalisées pour faire des choses comme changer h1 s à div s avec une certaine classe:

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

Cette bibliothèque fait une bonne première impression: bien documentée et une API propre. –

+0

J'utilise cette bibliothèque, mais elle supprime également les iframes intégrés. Est-il possible de permettre l'ajout d'iframes, j'ai des cas d'utilisation authentiques comme l'ajout d'une vidéo youtube ou diaporama slideshare. Comment pourrais-je autoriser de telles iframes intégrées? –

+1

@ usero1, Oui, vous pouvez 'allowElements (" iframe ")'. –