4
我正在计划使用owasp-java-html-sanitizer在用户生成的html上执行一些任务。使用owasp -java-html-sanitizer进行链接提取
我想从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"
到链接,不知道它的完成它的最佳方式。
这也提取网址:
.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")
您可以使用属性策略,这样你就不需要做'的“href” .equals(...)'或环比'attrs'数组的内容。你在其他地方允许使用'target'吗?如果是这样,你可能会得到两个可能不是你想要的目标。 – 2013-05-02 18:47:10
你的问题是什么,顺便说一句? – 2013-05-02 18:47:31
已经有一段时间了,但我认为问题在'hr'之前,而且一直是我提出这个问题后所发现的。如果你使用“属性策略”来填充答案,我会接受它作为答案。 – 2013-05-04 23:27:14