JSOUP - Как получить список запрещенных тегов, найденных в html?

Я использую JSoup для защиты областей форматированного текста от вредоносного кода. Как получить список всех запрещенных тегов/кодов, найденных в строке, переданной функциям JSoup parse, clean или isValid?

Я использую ColdFusion и могу разобрать текст с помощью JSoup следующим образом:

var jsoupDocument = application.jsoup.parse( this.Description );

Как мне получить список с помощью функции getErrors() JSoup, чтобы увидеть, какой HTML-код не соответствует моему whitelist.relaxed()?


person Thorsten    schedule 13.06.2015    source источник
comment
Поиск в Google по запрещенным тегам jsoup html привел меня сюда jsoup.org/apidocs/org /jsoup/safety/Белый список.html   -  person Dan Bracuk    schedule 13.06.2015
comment
И как мне реализовать это в coldfusion?   -  person Thorsten    schedule 13.06.2015


Ответы (1)


Я не верю, что в jsoup есть прямая функция для получения списка недопустимых элементов на основе вашего белого списка. Вам придется катить свой собственный.

Это не слишком сложно. Вы по-прежнему можете работать с объектом Document, выбирать все элементы, а затем индивидуально проверять их по вашему белому списку с помощью функции jsoup isValid().

Например, это, вероятно, могло бы помочь вам начать...

<cfscript>

jsoup = createObject("java", "org.jsoup.Jsoup");
whitelist = createObject("java", "org.jsoup.safety.Whitelist").relaxed();
form.textarea = '<header>Hi</header><script>hello</script><nav><li>Links</li></nav></textarea>';

badTags = [];
content = jsoup.parse(form.textarea).body().select("*");
for(element in content) {
    // tagName() doesn't inlcude the brackets so add them in
    tag = chr(60) & element.tagName() & chr(62);
    if (!jsoup.isValid(tag, whitelist)) {
        arrayAppend(badTags, tag);
    }
}

writeDump(badTags);

</cfscript>
person Tony Junkes    schedule 13.06.2015
comment
Работает как шарм! Большое спасибо, Тони, я очень ценю это! - person Thorsten; 15.06.2015