我在 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 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 页面设置 CSP 的正确方法吗?我还没有找到任何关于此的读物。
设置 *.fonts.googleapis.com/* 是否不允许页面中的所有内容?
虽然这很直观,但答案是no.
看看还不错的HTML5rocks 内容安全策略简介 https://www.html5rocks.com/en/tutorials/security/content-security-policy/关于通配符的主题(部分实施细节 https://www.html5rocks.com/en/tutorials/security/content-security-policy/#implementation-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 指令 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy#Directives。在你的情况下,你应该使用font-src
and style-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/ https://fonts.gstatic.com/,这是之前允许的。等等...
注意2:你可以去掉'unsafe-inline'
通过使用哈希或随机数来完全关键字。我无法在这个例子中完成这项工作,但如果您有兴趣,请看一下HTML5rocks 简介 https://www.html5rocks.com/en/tutorials/security/content-security-policy/#if-you-absolutely-must-use-it again.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)