对于所见即所得的编辑器来说,jsoup Whitelist放松模式太严格了

时间:2012-02-09 14:59:16

标签: java security wysiwyg jsoup xss

我正在尝试使用jsoup来清理我客户端中的一个wysiwyg发布的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

1 个答案:

答案 0 :(得分:7)

似乎可以使用样式属性来使用XSS。

XSS attacks and style attributes

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