什么是 CSS 注入以及如何预防?

What is CSS injection and how to prevent it?

我听我的朋友谈论这个名为“CSS 注入”的漏洞,但是,我不知道这是什么,一听到我就想,怎么可能有人做任何恶意的 activity 或使用 CSS?

的攻击

所以我想知道这个“CSS 注入”漏洞是什么以及如何防止它。

这是什么?

CSS 注入意味着攻击者设法将恶意 CSS 代码上传到您的网站,这将 运行 在您的访问者浏览器上。

危险吗?

在 2022 年写这篇文章,NO,CSS 注入几乎不会影响任何人,因为浏览器已经克服了这个问题,但是注意一些使用旧浏览器的用户可能会受此影响。

我应该做点什么吗?

你应该,即使目前这不是真正的风险,你应该防止攻击者向你的网站注入恶意CSSJavaScript,JavaScript很重要因为最近批处理了一些漏洞利用,大多数用户还没有将他们的浏览器更新到最新版本。

如何保护?

您应该始终过滤用户输入免受恶意注入,但额外的保护层是:

使用CSP Header (Content-Security-Policy) 可以防止浏览器在您的网站上执行恶意代码。

apache htaccess 文件中添加以下内容,但 mod_headers 应该是已启用

Header set Content-Security-Policy "default-src 'self';script-src 'self';style-src 'self'; object-src 'none'; frame-ancestors 'none'; form-action 'self';  base-uri 'self';"

注意如果使用CSSJavaScript来自另一个域,您不能使用上面的代码。

要了解更多信息并了解代码中每个词的含义,请访问 MDN CSP

编辑:

最简单的 CSS 注入示例是当攻击者设法向您的网站注入 CSS加载外部资产的代码,例如在背景中,这些资产是有效负载,幸运的是大多数浏览器都克服了这种漏洞。

background: url(http://somehackerdomain.com/payload...)

另一个仍然影响所有现代浏览器的 CSS 注入的简单示例是,如果您的网站 JavaScript 使用 CSS 属性 值,然后攻击者可以为此 属性 设置一个新值作为 JavaScript 代码可能会窃取 cookie 等

这些只是一些简单的例子。

有关 CSS 注入的更多信息,请参阅 C-SHARP-CORNER CSS Injection

保护 cookie 的第三层保护是使用 HttpOnly 来防止 JavaScript 从访问它们。有关 HttpOnly 的更多信息,请访问 HttpOnly

CSS 当攻击者将恶意 CSS 代码注入您的 Web 应用程序时会发生注入,但此漏洞不会产生任何安全影响,但可能会导致在您的网站上显示有害广告。您可以通过输入验证和实施安全性 headers 来防止它,例如 content-security-policy (CSP)。