您使用什么样的 HTMLPurifier 设置来净化 CSS?

发布于 2024-11-12 05:59:23 字数 447 浏览 2 评论 0原文

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

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

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

body {
    background-color: #FFF;
}

HTMLPurifier 允许这样做。

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

谢谢!

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

I'm building an application which lets users input custom CSS for their own profiles (kinda like MySpace, Friendster, or Blogger).

The problem is I'm having a hard time finding a way to purify XSS attacks through CSS. I tried using HTMLPurifier, but it doesn't work. One example:

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

body {
    background-color: #FFF;
}

This would be allowed by HTMLPurifier.

Are there any settings I need to use for HTMLPurifier to make this invalid?

Thanks!

Update
Is expression: the only way to push an exploit via CSS? If so, would a regular expression be more efficient than using HTMLPurifier?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

jJeQQOZ5 2024-11-19 05:59:23

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

更新。不。提供 CSS 有效负载的方法有很多种,仅仅搜索表达式是不够的。

HTML Purifier operates on HTML input, not CSS. That being said, you can probably trick it to work on CSS style sheets by wrapping the style sheet in style tags and turning on %Filter.ExtractStyleBlocks. You'll need CSS Tidy installed.

Update. No. There are many ways to deliver CSS payloads and searching for expression is not enough.

标点 2024-11-19 05:59:23

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

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

$str = preg_replace("/expression[\s:\]+/", '', $str) would remove the expression string.

In my oppinnion it may be better to simply "ban" or otherwise mark the user that tries to input this stuff to your site.
Dont know about other ways to break a browser by using CSS, maybe @Edward can help here:)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文