添加内容安全策略与折叠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-uriobject-src 等。

如果您发布您现在拥有的网站/CSP,我可以提供更多帮助。

【讨论】:

嗨,我可以使用 nonce 解决这个问题,但我很困惑,因为所有教程都说 nonce 是一个“一次性数字”,需要随机生成。我在网站上添加了以下内容,其中 nonce 值是我自己编造的。 @ezzo 如果你使用硬编码的随机数,它会破坏这个机制的目的。这个想法是攻击者无法访问或知道随机数。如果他们发现了对您网站的注入,并且知道 nonce,他们只会将其与 XSS 有效负载一起注入:<script nonce="HARD_CODED_NONCE">alert("XSS pwned")</script> 这就是为什么 nonce 需要是动态且不可预测的 - 所以附件无法注入它。 我注意到 CSPScanner.com 是您自己的产品。请不要spam我们。您必须披露您与您推广的产品或服务的任何关系。这不是建立品牌知名度的正确场所。

以上是关于添加内容安全策略与折叠css的主要内容,如果未能解决你的问题,请参考以下文章

拒绝加载样式表,因为它违反了内容安全策略

内容安全策略元标记“不安全内联”不起作用

Chrome 中的 Css 内联样式错误:“拒绝应用内联样式,因为它违反了以下内容安全策略指令……”

如何在 index.html 中添加内容安全策略

如何为 HTML 属性设置内容安全策略

如何在 chrome 扩展 manifest.json 文件中设置多个内容安全策略