我正在寻找一个 HTML 清理器,我可以通过 API 调用来清理从我的 Web 应用程序获取的字符串。是否有一些有用且易于使用的库可用?也许有人知道一个或两个吗?
我不需要很大的东西,它只需要能够找到未关闭的标签并将其关闭。
https://github.com/OWASP/java-html-sanitizer目前已经被标记为可用于生产环境。
这是一个快速且易于配置的Java HTML清理程序,可以让您在Web应用程序中包含由第三方编写的HTML,并同时保护您免受XSS攻击。
您可以使用预打包策略。
Sanitizers.FORMATTING.and(Sanitizers.LINKS)
或者测试展示了如何轻松地配置自己的。
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"))
allowElements("iframe")
。 - Mike Samuel<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&jqoemcache=paWu1" width="425" height="349" allowfullscreen="true" allowscriptaccess="always" scrolling="no" frameborder="0"></iframe></div>
*,在经过处理后输出的结果中,所有属性都被剥离了。我该如何防止属性被剥离?顺便问一下,使用带有这些属性的iframe是否安全? - Rajat Gupta<div><iframe></iframe></div>
*,这没有用处...谢谢! - Rajat Guptasrc
属性。请参阅HTML策略构建器类的文档。 - Mike Samuel