添加内容安全策略与折叠css
Posted
技术标签:
【中文标题】添加内容安全策略与折叠css【英文标题】:Adding a Content Security Policy vs above the fold css 【发布时间】:2020-12-12 20:09:46 【问题描述】:我正在我的网站上实施内容安全政策。我目前有 首屏 内容的页面 css,以“取悦”Google 见解并为最终用户创建一个加载速度更快的网站。 Google 还为 首屏 内容推荐页面 CSS,这就是我所做的。
由于内容安全政策禁用了css,这意味着如果我添加它,页面将无法正常显示,所以我不确定该怎么做。看来我有两个选择。
-
完全忘记添加安全内容策略并保持原样。
或者
-
添加安全内容策略并将所有 css 放入外部文件,但这会在 Google 页面洞察中创建“呈现阻止内容”消息,这可能会影响用户点击率和可能的 SEO。
Surley 还有另一种方式???
提前感谢您的所有建议。 埃佐
【问题讨论】:
您有第三个选择 - 保留 CSP 并将'unsafe-inline'
或 'nonce-value'
添加到 style-src
指令。
我可以使用 nonce 解决这个问题,但我很困惑,因为教程说 nonce 是一个“一次性数字”,需要随机生成。我在网站上添加了以下内容,其中 nonce 值是我刚刚编造的。在 html 页面上,我将
是的,在每个请求上生成一个新的nonce
非常安全。你甚至可以为add_header in Nginx 做到这一点。或者,您可以使用 'sha256-value'
('hash-value'
) 令牌代替 'nonce'
- 只有在更改 <style></style>
内容时才需要重新生成它。
【参考方案1】:
CSP 是一个非常强大的工具来保护您的网站,如果不利用它会很可惜。
将unsafe-inline
用于script-src
指令确实非常不安全。
但是,style-src
指令的 unsafe-inline
被认为是可以的,因为它不能用于 XSS。
我不知道您使用的是哪个网站漏洞检查器(人/工具),但您可以查看CSP scan of github.com,看到他们也有style-src: 'unsafe-inline'
,并且仍然在评分器上得分 A- (迄今为止同类最佳)。
使用扫描器确保您正确构建 CSP,并且没有留下我们的关键元素,例如 base-uri
、object-src
等。
如果您发布您现在拥有的网站/CSP,我可以提供更多帮助。
【讨论】:
嗨,我可以使用 nonce 解决这个问题,但我很困惑,因为所有教程都说 nonce 是一个“一次性数字”,需要随机生成。我在网站上添加了以下内容,其中 nonce 值是我自己编造的。 @ezzo 如果你使用硬编码的随机数,它会破坏这个机制的目的。这个想法是攻击者无法访问或知道随机数。如果他们发现了对您网站的注入,并且知道 nonce,他们只会将其与 XSS 有效负载一起注入:<script nonce="HARD_CODED_NONCE">alert("XSS pwned")</script>
这就是为什么 nonce 需要是动态且不可预测的 - 所以附件无法注入它。
我注意到 CSPScanner.com 是您自己的产品。请不要spam我们。您必须披露您与您推广的产品或服务的任何关系。这不是建立品牌知名度的正确场所。以上是关于添加内容安全策略与折叠css的主要内容,如果未能解决你的问题,请参考以下文章