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

jas*_*ace 8 java security xss wysiwyg jsoup

我正在尝试使用jsoup来清理从我的客户端中的一个wysiwyg发布的html(当它发生时)

松弛模式看起来不够宽松,因为默认情况下它会剥离span元素和任何样式属性.

例如

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

   Jsoup.clean(text, Whitelist.relaxed());
Run Code Online (Sandbox Code Playgroud)

会输出

<p>foobar</p>
Run Code Online (Sandbox Code Playgroud)

<span>foobar</span>
Run Code Online (Sandbox Code Playgroud)

将完全删除.

有没有人有任何使用Jsoup消除XSS攻击可能性的经验,仍然允许上述元素和属性通过?

编辑:我已经使用以下内容了.任何人都可以建议这是多么脆弱吗?

Jsoup.clean(pitch, Whitelist.relaxed().addTags("span").addAttributes(":all","style"));
Run Code Online (Sandbox Code Playgroud)

编辑2:是否有人在生产中使用了owasp库.它看起来正确消毒,同时保留正确的样式.OWASP

小智 7

似乎可以使用样式属性来使用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")));
Run Code Online (Sandbox Code Playgroud)

它准确输出输入.如果这确实是一个XSS向量,那么你仍然可能遇到麻烦.