【发布时间】:2010-12-29 03:43:35
【问题描述】:
我正在寻找一个 html sanitizer,我可以根据 API 调用它来清理从我的 webapp 获得的字符串。是否有一些有用的易于使用的库可用?有人知道一两个吗?
我不需要什么大的东西,它必须能够找到未关闭的标签并关闭它们。
【问题讨论】:
我正在寻找一个 html sanitizer,我可以根据 API 调用它来清理从我的 webapp 获得的字符串。是否有一些有用的易于使用的库可用?有人知道一两个吗?
我不需要什么大的东西,它必须能够找到未关闭的标签并关闭它们。
【问题讨论】:
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()
或编写自定义策略来执行诸如将 h1s 更改为具有特定类的 divs 之类的事情:
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"))
【讨论】:
allowElements("iframe")。
<div class="embeddedContent" data-resizetype="noresize" data-align="none" data-oembed="http://www.youtube.com/watch?v=fC5N2EPCesk"><iframe src="//www.youtube.com/embed/fC5N2EPCesk?wmode=transparent&amp;jqoemcache=paWu1" width="425" height="349" allowfullscreen="true" allowscriptaccess="always" scrolling="no" frameborder="0"></iframe></div> & 在经过净化的输出中,我将所有属性都删除了。如何防止属性被剥离?顺便说一句,允许具有所有这些属性的 iframe 是否安全?
src 属性具有您认可的值。请参阅 HTML 策略构建器类的文档。
HTML 解析器 JSoup 还支持按策略清理:http://jsoup.org/cookbook/cleaning-html/whitelist-sanitizer
【讨论】:
除了JTidy你还可以看看:
Nekohtml
TagSoup
Getting text in HTmL document
【讨论】:
JTidy 可以帮到你。
【讨论】: