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