Jsoup cleaner версии 1.12.1 возвращает значение, отличное от версии 1.11.2 - PullRequest
0 голосов
/ 17 января 2020

У меня есть тест Junit, который проверяет следующую строку "<iframe src=http://xss.rocks/scriptlet.html < asd" и использую Whitelist.none().

Jsoup.clean("<iframe src=http://xss.rocks/scriptlet.html < asd", Whitelist.none());

Jsoup cleaner версии 1.11.2 возвращает пустую строку.
Jsoup cleaner версии 1.12.1 возвращает "Я не могу понять, почему такое изменение. Возможно, в версии 1.11.2 была исправлена ​​ошибка. Но я не нашел информации о такой ошибке. кто-нибудь скажет мне, что из этого верно и на каком основании?

1 Ответ

0 голосов
/ 03 февраля 2020

Я проверил журнал изменений для 1.12.1 и нашел это вероятное изменение :

Улучшение: если начальный тег отсутствует> и новый тег отображается с <, воспринимайте это как новый тег. (Это отличается от HTML5 spe c, которое будет указано в атрибуте с именем, начинающимся с <, но на практике это влияет на слишком много страниц. </p>

https://github.com/jhy/jsoup/issues/797

Я думаю, что ответ является довольно разумной (и, безусловно, безопасной) интерпретацией искаженного ввода. И чтобы быть точным c, фактический вывод равен:

&lt; asd

Это означает, что можно безопасно выполнять рендеринг, не опасаясь каких-либо XSS-атак.

...