什么是 CSS 注入以及如何预防?
What is CSS injection and how to prevent it?
我听我的朋友谈论这个名为“CSS 注入”的漏洞,但是,我不知道这是什么,一听到我就想,怎么可能有人做任何恶意的 activity 或使用 CSS?
的攻击
所以我想知道这个“CSS 注入”漏洞是什么以及如何防止它。
这是什么?
CSS 注入意味着攻击者设法将恶意 CSS 代码上传到您的网站,这将 运行 在您的访问者浏览器上。
危险吗?
在 2022 年写这篇文章,NO,CSS 注入几乎不会影响任何人,因为浏览器已经克服了这个问题,但是注意一些使用旧浏览器的用户可能会受此影响。
我应该做点什么吗?
是你应该,即使目前这不是真正的风险,你应该防止攻击者向你的网站注入恶意CSS和JavaScript,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';"
注意如果使用CSS或JavaScript来自另一个域,您不能使用上面的代码。
要了解更多信息并了解代码中每个词的含义,请访问 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)。
我听我的朋友谈论这个名为“CSS 注入”的漏洞,但是,我不知道这是什么,一听到我就想,怎么可能有人做任何恶意的 activity 或使用 CSS?
的攻击所以我想知道这个“CSS 注入”漏洞是什么以及如何防止它。
这是什么?
CSS 注入意味着攻击者设法将恶意 CSS 代码上传到您的网站,这将 运行 在您的访问者浏览器上。
危险吗?
在 2022 年写这篇文章,NO,CSS 注入几乎不会影响任何人,因为浏览器已经克服了这个问题,但是注意一些使用旧浏览器的用户可能会受此影响。
我应该做点什么吗?
是你应该,即使目前这不是真正的风险,你应该防止攻击者向你的网站注入恶意CSS和JavaScript,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';"
注意如果使用CSS或JavaScript来自另一个域,您不能使用上面的代码。
要了解更多信息并了解代码中每个词的含义,请访问 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)。