【问题标题】:Allowing Javascript and CSS but not XSS允许 Javascript 和 CSS 但不允许 XSS
【发布时间】:2014-01-19 15:59:00
【问题描述】:

我们允许用户使用 TinyMCE 创建丰富的内容,其中包括 Javascript 和 CSS。 但是,当内容到达服务器 (Java) 时,我们希望过滤掉所有 XSS 代码或潜在的恶意代码,例如 document.cookie、eval 等,无论它们是在 CSS、内联 JS、使用字符串文本制作的 XSS Javascript (例如 document.write) 等其他一切,例如。在鼠标悬停时更改颜色,在 CSS 上设置渐变等都很好。

我们希望为用户提供灵活性,但同时我们希望确保用户的安全。我们研究了 HTML Purifier、jSoup 等库,但它们似乎不够聪明,无法将潜在的恶意 JS 与安全的 JS 区分开来。 我们想知道是否有任何方法可以做到这一点?

谢谢。

【问题讨论】:

  • 确保您确实需要 JS 来实现“丰富的内容”。如今,CSS 本身可以让你走得很远,而放弃 JS 将使整个事情的制作成本更低。
  • 鼠标悬停在图像上的东西会显示放大的图片,即。预览,很受欢迎。我怀疑只有 CSS 能做到这一点
  • 当然可以,起点是codepen.io/anon/pen/ajsyi。我相信您可以使用 JS 做更多事情,但代表您的网站运行不受信任的代码是一个非常有问题的替代方案。
  • 没错,用户的灵活性也很重要,但更糟糕的情况是我们只使用 CSS,就像你说的那样。或者更糟糕的是,我们只允许 HTML.THanks

标签: java javascript html css xss


【解决方案1】:

你看过 google caja 吗?它是第三方 javascript 的编译器,因此可以安全地嵌入到另一个站点中:

https://developers.google.com/caja/

这听起来像您正在寻找的东西。

【讨论】:

  • 到目前为止这是最好的答案,我还在研究它,因为它需要服务器端代码部署,但我想知道 Wordpress 是如何做到的。我试过谷歌搜索,但到目前为止没有运气。如果您或任何人可以让我知道,那就太好了。谢谢。
【解决方案2】:

您可以使用 JSoup 来完成这项工作。 JSoup 有一个 XSS Cleaner Parser,它可以在 whilelist 对象(允许的标签列表)上工作。jsoup 白名单清理器通过解析输入 HTML,然后遍历解析树并只允许已知安全的标签和属性(和值) 进入清洁后的输出。它不使用不适合此任务的正则表达式。 jsoup 提供了一系列白名单配置来满足大多数需求;如有必要,可以对其进行修改。阅读此链接了解更多详情 [http://jsoup.org/cookbook/cleaning-html/whitelist-sanitizer]。

【讨论】:

  • 我们实际上没有运气。一个例子,当我们真正希望它只在 onclick 执行恶意代码时剥离它时,它会剥离每一个“onclick”。另一个示例,仅当样式包含恶意样式='background:url("javascript:alert('XSS')")' 时才应过滤样式。我想我们希望这个库足够聪明,可以区分恶意的和好的。 JSoup 没有这种能力。
  • 据我所知,恐怕不存在这样的库。您可能必须编写规则来制作 JavaScript 的白名单和黑名单。您可以制定静态规则,例如在 Zozzle google.co.in/…‎> 中使用的规则。
猜你喜欢
  • 2018-10-30
  • 1970-01-01
  • 2012-06-11
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
  • 1970-01-01
  • 2021-08-24
  • 2015-08-15
相关资源
最近更新 更多