我正在寻找一个html清理程序,我可以根据API调用它来清理我从webapp获取的字符串。是否有一些有用的易用库?有谁知道可能有一两个?
我不需要大的东西,只需要能够找到未封闭的标签并关闭它们。
答案 0 :(得分: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
更改为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"))
答案 1 :(得分:10)
JTidy可能对您有帮助。
答案 2 :(得分:2)
除了JTidy之外,你还可以看看:
Nekohtml
TagSoup
Getting text in HTmL document
答案 3 :(得分:2)
HTML解析器 JSoup 还支持政策制裁:http://jsoup.org/cookbook/cleaning-html/whitelist-sanitizer
答案 4 :(得分:1)