Ответ 1
JTidy может вам помочь.
Я ищу html sanitizer, который я могу вызвать для каждого API для дезинфекции строк, которые я получаю от своего webapp. Есть ли полезные полезные в использовании libs? Кто-нибудь знает, может быть, один или два?
Мне не нужно что-то большое, оно просто должно быть в состоянии найти закрытые теги и закрыть их.
JTidy может вам помочь.
https://github.com/OWASP/java-html-sanitizer теперь отмечен как готовый к использованию.
Быстрая и простая настройка HTML Sanitizer, написанная на Java, которая позволяет включать 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"))
Помимо JTidy вы также можете посмотреть:
Nekohtml
TagSoup
Получение текста в документе HTmL
HTML Parser JSoup также поддерживает санитацию по политике: http://jsoup.org/cookbook/cleaning-html/whitelist-sanitizer
http://roberto.open-lab.com/2009/11/05/a-java-html-sanitizer-also-against-xss/