拒绝应用内联样式,因为它违反了以下内容安全策略:" style-src' self' https://apis.google.com。

时间:2016-12-18 14:06:52

标签: google-signin

CB = gapi.loaded_0:格式化:2677

n.setAttribute(" style"," position:absolute; width:1px; height:1px; left:-9999px;");

以下是完整的信息:

拒绝应用内联样式,因为它违反了以下内容安全策略指令:" style-src' self' https://apis.google.com' sha256-g1S9hiXQ4j0r + GB1Gi3NXXa9uB + 5dR2H21SD7BToUKg ='"。 “不安全 - 内联”和“不安全”。关键字,哈希(' sha256-WuACXZzzdKkWqck4qh4 / nDEQy6ZpPTP0wGUXa / 3oqT4 =')或nonce(' nonce -...')是启用内联执行所必需的。

我不想启用“不安全 - 内联”。我有什么选择?如上所示,似乎我在style-src指令中只能包含一个sha1哈希。但是,我得到多个内联样式违规,每个都建议使用自己的sha1哈希。可能是我使用错误的语法来包含多个sha1哈希?有什么建议吗?

感谢。

2 个答案:

答案 0 :(得分:1)

问题不是你只能指定一个哈希 - 这不是真的。您可以指定更多哈希值,例如

style-src 'self' 'sha256-g1S9hiXQ4j0r+GB1Gi3NXXa9uB+5dR2H21SD7BToUKg=' 'sha256-WuACXZzzdKkWqck4qh4/nDEQy6ZpPTP0wGUXa/3oqT4='

问题是,至少有些浏览器(Chrome,Safari)适用于“shaXXX&#39;仅适用于<style>个元素的规则,而不是style个属性。请参阅:https://bugs.chromium.org/p/chromium/issues/detail?id=546106

那么,有哪些选择?

  • 使用unsafe-inline(不推荐),
  • 重写代码以使用<style>代码并使用&#39; shaXXX&#39;或者&#39; nonce&#39;,
  • 使用单独的样式表(推荐)。

答案 1 :(得分:0)

我最终使用了他们的OpenID Connect API,因为我不想使用unsafe-inline。它涉及(正确)实施。由于谷歌使用iframe注入他们的代码,我认为他们会使用&lt; style&gt;快速修复此问题。 iframe中的标记。我认为对于开发人员来说,他们不必使用OpenID Connect会更方便。在此之前,我认为OpenID Connect是最佳选择。