问题描述
我得到了这个 CSP:
Content-Security-Policy: default-src 'none'; script-src 'self' 'unsafe-eval' 'unsafe-inline'; connect-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline' fonts.googleapis.com; frame-src 'self'; font-src data: fonts.gstatic.com 'self'; frame-ancestors 'self';
例如,fonts.googleapis.com 没有方案或协议(https:不存在)。它是否自动意味着它通过安全的 HTTPS(如果当前页面/源是)?它是否容易受到 MiTM 攻击?我认为文档对我来说不清楚(Google 的 CSP 评估员说“好”)
解决方法
这是否自动意味着它通过安全的 HTTPS(如果当前页面/源是)?
是的,schemeless host-source 意味着浏览器将遵循同源策略来恢复实际方案。
因此,如果页面通过 HTTPS 加载 - CSP 中的所有无方案主机源都获得 https://
方案。
在 HTTP 页面上,CSP 中的所有无方案主机源都获得 http://
方案,所有细节都是 here。
它是否容易受到 MiTM 攻击?
它只会在 HTTP 页面上容易受到攻击。任何 HTTP 页面都容易受到 MiTM 的攻击,许多俄罗斯 ISP still injects their Ads 在 HTTP 上使用 MiTM 进入客户访问的页面。
您为什么不担心 'self'
的使用? 'self'
在 HTTP 页面上表示 http://example.com
,在 HTTPS 页面上表示 https://example.com
。因此,它与无计划的 fonts.googleapis.com
用法一样容易受到攻击。
BTW 为什么要在 2021 年从 Google 的 CDN 加载字体?这会降低网站速度:1、2 并且不会被浏览器缓存。使用 https://google-webfonts-helper.herokuapp.com/fonts 提取字体并将其存储在本地,然后使用 <link rel="preload" as="font" ...
预加载。