我正在尝试使用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
答案 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向量,那么你仍然可能遇到麻烦。