java - jsoup 白名单放松模式对于所见即所得编辑器来说过于严格

标签 java security wysiwyg jsoup xss

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

relaxed 模式似乎不够宽松,因为默认情况下它会去除 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 库吗?它看起来可以在保持正确样式的同时正确 sanitizer 。 OWASP

最佳答案

貌似可以利用style属性实现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 vector ,那么您仍然有麻烦。

关于java - jsoup 白名单放松模式对于所见即所得编辑器来说过于严格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9213189/

相关文章:

javascript - 阻止 CKEDITOR 将上一个元素类复制到页面上的每个新元素中

security - 如何知道通过 iframe 加载的页面是否在沙箱内?

javascript - Summernote上传图片: onImageUpload and sendFile function not working

java.net.ConnectException : Failed to connect to/127. 0.0.1:9080 Realm 对象服务器

java - 如何绘制一组水平线?

java - Gson.json() 解析json文件时返回null

java - 在不同端口的同一个 tomcat 上部署 Angular 5 和 spring boot 应用程序

java - 是否可以将数据库凭据存储在 hibernate.cfg.xml 中

c# - 沙盒 AppDomain 中的线程安全

用于简码的 WordPress 编辑器图像