【问题标题】:Adding google fonts (fonts.googleapis.com) to CSP header将 google 字体 (fonts.googleapis.com) 添加到 CSP 标头
【发布时间】:2017-07-11 04:18:10
【问题描述】:

我在 gitHub 页面上托管一个个人项目,并使用 cloudflare 来强制执行 https。现在我想实施 CSP 政策。

我尝试在页面顶部添加元标记:

<meta HTTP-EQUIV='Content-Security-Policy' CONTENT="default-src 'self' *.fonts.googleapis.com/* *.cloudflare.com/* *.fonts.googleapis.com/*;">

但我收到以下错误:

拒绝加载样式表 'https://fonts.googleapis.com/icon?family=Material+Icons' 因为它 违反以下内容安全策略指令:“default-src '自我' .fonts.googleapis.com/ .cloudflare.com/ .fonts.googleapis.com/"。请注意,'style-src' 没有明确设置,因此 'default-src' 用作备用。

这是我包含的脚本:

  <link href="https://fonts.googleapis.com/icon?family=Material+Icons"
        rel="stylesheet">
  <link href="https://fonts.googleapis.com/css?family=Noto+Sans|Roboto" rel="stylesheet">

不会设置*.fonts.googleapis.com/* 允许页面中的所有内容?

由于这是我第一次设置 CSP,这是为 github 页面设置它的正确方法吗?我还没有找到任何关于此的阅读。

【问题讨论】:

  • 我在 dotnet core MVC 应用程序上遇到了来自 Chrome 的同样错误。
  • @WilliamLohan 将其设置为 CONTENT="default-src 'self' fonts.googleapis.com fonts.gstatic.com cloudflare.com; 可执行脚本仍然无法工作。

标签: html meta content-security-policy


【解决方案1】:

不会设置 *.fonts.googleapis.com/* 允许页面中的所有内容?

虽然这很直观,但答案是

请参阅关于通配符主题的相当不错的HTML5rocks introduction to Content Security PolicyImplementation details 部分):

接受通配符,但只能作为方案、端口或主机名最左边的位置:*://*.example.com:* 将匹配 example.com 的所有子域(但不example.com 本身),在任何端口上使用任何方案。

因此,这两种字体的工作 CSP 可能如下所示:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' https://fonts.googleapis.com/ https://fonts.gstatic.com/ 'unsafe-inline';">

注意 1:最好使用对应的CSP directives。在您的情况下,您应该像这样使用font-srcstyle-src

<meta http-equiv="Content-Security-Policy" content="default-src 'self'; font-src 'self' https://fonts.gstatic.com/; style-src 'self' https://fonts.googleapis.com/ 'unsafe-inline';">

使用相应指令的好处是您的 CSP 现在变得非常严格。例如,您不再允许 'unsafe-inline' 用于脚本源。这意味着现在禁止使用内联 javascript。还禁止从https://fonts.gstatic.com/ 加载脚本,这在以前是允许的。等等……


注意 2:您可以使用散列或随机数完全摆脱 'unsafe-inline' 关键字。对于这个示例,我无法完成这项工作,但如果您有兴趣,请再次查看 HTML5rocks intro

【讨论】:

  • 2020 年 11 月 17 日仍然是一个解决方案!
猜你喜欢
  • 2020-04-17
  • 2020-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
  • 2016-01-20
  • 2020-12-01
  • 2017-01-09
相关资源
最近更新 更多