【问题标题】:Google Cloud Services Intermittent Content Security Policy Issues谷歌云服务间歇性内容安全政策问题
【发布时间】:2020-04-29 14:09:56
【问题描述】:

我有一个托管在我通过 Google 平台提供的 google 存储桶中的静态网站。

这个网站已经运行了大约 6 个月没有任何问题,但在过去的一个月里,由于“内容安全”问题,我遇到了间歇性的问题,因为它没有加载样式表和脚本 - 这导致只是主要的文本页面出现在浏览器中,没有样式也没有(基于 Javascript)的功能。间歇性是指它可以正常工作几个小时,然后失败几个小时。

此服务没有“网络服务器”,例如我只是从存储桶中提供静态页面 - 我知道谷歌必须有自己的服务器来处理这个问题。无论用户使用什么浏览器都会发生故障,并且清除浏览器缓存无济于事,因此此问题出在 Google 服务器端。

在浏览器中检查开发者控制台,我可以看到网页使用的所有样式表、脚本和字体存在以下问题:

> Refused to load the stylesheet XXXXXXX because it violates the
> following Content Security Policy directive: "default-src 'none'".
> Note that 'style-src-elem' was not explicitly set, so 'default-src' is
> used as a fallback.

我认为我的内容安全设置正确:

   <meta http-equiv="Content-Security-Policy" content="
         default-src 'self'; 
         img-src 'self'
            https://syndication.twitter.com;
         font-src 'self'    
            https://use.fontawesome.com
            https://fonts.gstatic.com
            https://fonts.googleapis.com;
         script-src 'self' 'unsafe-inline'
            https://stackpath.bootstrapcdn.com 
            https://connect.facebook.net
            https://platform.twitter.com
            https://code.jquery.com
            https://cdnjs.cloudflare.com; 
         style-src 'self' 'unsafe-inline'
            https://stackpath.bootstrapcdn.com 
            https://use.fontawesome.com 
            https://fonts.googleapis.com;
         frame-src 'self'   
            https://www.facebook.com
            https://connect.facebook.net
            https://platform.twitter.com
            https://www.youtube.com;
   ">  

这些是失败的链接,每个“外部”链接都包括使用导入签名以确保加载“真实”的东西。

<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">

<!-- Font Awesome -->
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.2.0/css/all.css" integrity="sha384-hWVjflwFxL6sNzntih27bfxkr27PmbbK/iSvJ+a4+0owXq79v+lsFkW54bOGbiDQ" crossorigin="anonymous">

<!-- Custom fonts for this template -->
<link href='https://fonts.googleapis.com/css?family=Titillium+Web' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>

任何人都可以看到我做错了什么或提供任何关于如何使其始终如一地工作的建议吗?

【问题讨论】:

  • 您是否仍然遇到此问题?我遇到了同样的问题,似乎是由于内联 中使用了 JavaScript url

标签: google-cloud-platform google-cloud-storage


【解决方案1】:

遗憾的是,目前无法在网站存储桶上以这种方式设置 CSP 标头,因为云存储用于网站存储桶的网络服务器可能会为您的网站添加默认值。

有一个功能请求for this,但似乎距离上次更新已经有一段时间了。

如果您需要在没有这些问题的情况下为您的页面提供服务,您可以尝试应用引擎标准(您甚至可以申请Always Free Tier

【讨论】:

  • 感谢您抽出宝贵时间回答,我之前没有看到过该功能请求/问题,这很有用。但是问题是间歇性的 - 如果 CSP 标头错误或没有使用网络服务器替换它,那么这个问题不会每次都发生吗?如果您想看一下,该网站位于visionfutsal.com
  • 哦,我能看到你的网页并注意到一些内联样式和脚本,这会导致这种消息,所以浏览器会自动禁止这些样式和脚本,以防止任何攻击你可以在这里查看更多信息html5rocks.com/en/tutorials/security/content-security-policy/…,如果您同意我可以编辑我的答案并包含此信息
  • @chinoche 你能解释为什么它会间歇性发生吗?对我来说,这看起来像是浏览器的错误,因为它不会始终如一地发生。
猜你喜欢
  • 1970-01-01
  • 2023-02-02
  • 2021-08-03
  • 2021-11-22
  • 2021-09-27
  • 2015-07-13
  • 1970-01-01
  • 2019-04-15
  • 1970-01-01
相关资源
最近更新 更多