Спокойный режим jsoup Whitelist слишком строг для редактора wysiwyg - PullRequest
8 голосов
/ 09 февраля 2012

Я пытаюсь использовать jsoup для очистки HTML, отправленного из wysiwyg в моем клиенте (как это ни странно)

Расслабленный режим выглядит недостаточно расслабленным, поскольку по умолчанию он удаляет элементы span и любые атрибуты стиля.

например

String text = "<p style="color: #ff0000;">foobar</p>";

   Jsoup.clean(text, Whitelist.relaxed());

будет выводить

<p>foobar</p>

и

<span>foobar</span>

будет удален полностью.

Есть ли у кого-нибудь опыт использования Jsoup для искоренения возможности XSS-атак и все же пропускаемые выше элементы и атрибуты?

Редактировать: я пошел со следующим. Кто-нибудь может посоветовать, насколько это уязвимо?

Jsoup.clean(pitch, Whitelist.relaxed().addTags("span").addAttributes(":all","style"));

Редактировать 2: Кто-нибудь использовал библиотеку owasp в производстве. Это выглядит, чтобы правильно санировать, сохраняя правильное моделирование. OWASP

1 Ответ

7 голосов
/ 09 февраля 2012

Кажется, что возможно иметь XSS, используя атрибут style ..

XSS-атаки и атрибуты стиля

http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/

http://www.acunetix.com/websitesecurity/cross-site-scripting.htm (Посмотрите на раздел DIV, который, я бы предположил, работает так же для SPAN)

Вот код, который я написал для проверки примера в последней ссылке.

    text = "<span style=\"width: expression(alert('XSS'));\">";
    System.out.println(Jsoup.clean(text, org.jsoup.safety.Whitelist.relaxed().addTags("span").addAttributes(":all","style")));

Точно выводит данные. Если это действительно вектор XSS, то у вас все еще могут быть проблемы.

...