如何将hash(sha -...)或nonce应用于标头标记HTML?

时间:2018-01-10 15:56:48

标签: angular inline production content-security-policy

我使用以下命令创建了Angular 2生成版本:

ng build --prod --aot

然而,CSP阻止了dist文件夹下的生成文件(例如:main.0c05c6d4245461043e3f.bundle),从而使一些应用的样式不显示。

我检索到的错误是:

  

拒绝应用内联样式,因为它违反了以下内容安全策略指令

我检查了所有组件,但没有找到任何CSS样式的内联调用。这可能是因为第三方插件?或者呢?

但是,我还想应用散列或随机数(根据chrome建议)来解决CSP违规。

怎么做?

1 个答案:

答案 0 :(得分:0)

如果你不是,你应该使用Chrome的浏览器控制台来调试CSP,它有非常详细的信息。这是一个内联样式示例:

enter image description here

它告诉你违反的指令,包括完整的指令,样式在哪里(右边的索引链接),以及你可以做些什么来解决它(在这种情况下,unsafe-inline,nonce,或者哈希)。它甚至包括你可以使用的哈希;如果你只说一个内联样式,你可以复制整个强(包括单引号)并将其包含在style-src中。

我通常不会建议使用内联样式的哈希,除非您只有很少的内联样式,并且您确定它们不会更改。如果您完全控制您的网站,您应该能够在代码中找到并删除它们,如果您使用某些CMS,如Wordpress(更糟糕的是,插件),几乎不可能找到并标记它们。< / p>

但出于安全考虑,除了你发现完全不可能删除或散列所有内联样式之外,你也不应该默认为unsafe-inline