【问题标题】:What kind of HTMLPurifier settings do you use to purify CSS?你使用什么样的 HTMLPurifier 设置来净化 CSS?
【发布时间】:2011-06-08 21:05:53
【问题描述】:

我正在构建一个应用程序,它允许用户为自己的个人资料(有点像 MySpace、Friendster 或 Blogger)输入自定义 CSS。

问题是我很难找到通过 CSS 净化 XSS 攻击的方法。我尝试使用 HTMLPurifier,但它不起作用。一个例子:

html {
    expression: alert('xss');
}

body {
    background-color: #FFF;
}

HTMLPurifier 允许这样做。

我需要对 HTMLPurifier 使用任何设置来使其无效吗?

谢谢!

更新
expression: 是通过 CSS 推送漏洞的唯一方法吗?如果是这样,正则表达式会比使用 HTMLPurifier 更有效吗?

【问题讨论】:

  • 为什么首先允许使用“表达”?
  • 由于用户将自己输入 CSS,我不能保证他们不会使用它。 “表达式:”是通过 CSS 运行漏洞的唯一方法吗?如果是这样,那么正则表达式会更有效吗?
  • 这个答案展示了如何配置 HTMLPurifier 和 CSSTidy 来清理 CSS:stackoverflow.com/questions/3241616/…

标签: php css htmlpurifier xss


【解决方案1】:

HTML Purifier 作用于 HTML 输入,而不是 CSS。话虽如此,您可能可以通过将样式表包装在样式标签中并打开 %Filter.ExtractStyleBlocks 来欺骗它在 CSS 样式表上工作。您需要安装 CSS Tidy。

更新。不。有很多方法可以传递 CSS 有效负载,搜索表达式是不够的。

【讨论】:

    【解决方案2】:

    $str = preg_replace("/expression[\s:\]+/", '', $str) 将删除表达式字符串。

    在我看来,最好简单地“禁止”或以其他方式标记尝试将这些内容输入您的网站的用户。 不知道使用 CSS 破坏浏览器的其他方法,也许@Edward 可以在这里提供帮助:)

    【讨论】:

    • 禁止它们是一种很好的治疗方法,但我正在寻找的是一种预防措施。此外,当您拥有大量拥有大量自定义页面的用户时,它将无法扩展。
    猜你喜欢
    • 2012-03-04
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 2020-10-13
    相关资源
    最近更新 更多