1

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

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

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

body {
    background-color: #FFF;
}

HTMLPurifier 将允许这样做。

我需要为 HTMLPurifier 使用任何设置以使其无效吗?

谢谢!

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

4

2 回答 2

2

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

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

于 2011-06-02T09:41:30.847 回答
0

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

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

于 2011-06-08T13:05:53.820 回答