使用owaspjavahtmlsanitizer进行链接提取
我计划使用owasp java html净化程序对用户生成的html执行一些任务
我想从html字符串中提取URL列表
我还想确保所有链接的目标都设置为“_blank”,这似乎与HtmlPolicyBuilder.requireRelNofollowOnLinks
配置类似。(完成)
PolicyFactory linkRewrite = new HtmlPolicyBuilder().allowAttributes("href").onElements("a")
.requireRelNofollowOnLinks().allowElements(new ElementPolicy() {
public String apply(String elementName, List<String> attrs) {
attrs.add("target");
attrs.add("_blank");
return "a";
}
}, "a").toFactory();
这会给链接添加target="_blank"
,但不确定这是实现它的最佳方式
这还会提取URL:
.allowElements(new ElementPolicy() {
public String apply(String elementName, List<String> attrs) {
for (int i = 0, n = attrs.size(); i < n; i += 2) {
if ("href".equals(attrs.get(i))) {
urls.add(attrs.get(i + 1));
break;
}
}
attrs.add("target");
attrs.add("_blank");
return elementName;
}
}, "a")
# 1 楼答案