9

我正在尝试使用 jsoup 来清理从我的客户端中的所见即所得发布的 html(碰巧很小)

宽松模式似乎不够宽松,因为默认情况下它会剥离 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

4

1 回答 1

7

似乎可以使用 style 属性进行 XSS ..

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 向量,那么您仍然可能会遇到麻烦。

于 2012-02-09T17:22:07.440 回答