![](/img/trans.png)
[英]iOS Refused to connect because it appears in neither the connect-src directive nor the default-src directive of the Content Security Policy
[英]Content-Security-Policy: default-src *
我开始在使用内联脚本和其他犯罪行为的网站上探索“内容安全策略”。 我为每个标头字段配置了CSP,如下所示:
content-security-policy: default-src *; frame-ancestors 'self'; style-src 'self' 'unsafe-inline' fonts.googleapis.com cdn.jsdelivr.net *.stripe.com; report-uri https://sentry.io/api/x/csp-report/?sentry_key=y
我现在的问题是浏览器抱怨以下消息:
拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“ default-src *”
我阅读了default-src <source>
的文档,其中指出<source>
可以是以下来源之一:
<host-source>
<scheme-source>
'self'
'unsafe-inline'
在我看来,星号只能用于宿主源。 但是由于似乎只允许一个<source>
我还能做什么? default-src * 'unsafe-inline'
不符合要求,对吧?
我的目标基本上是使用一个可行的最小CSP配置(并且可以通过iframe嵌入)。 我知道,遵循特定规则是最佳做法。
在我看来,星号只能用于宿主源。
是
但是由于似乎只允许一个
<source>
我还能做什么?
允许多个<source>
。
default-src * 'unsafe-inline'
不符合要求,对吧?
它符合要求。
您可以使用https://cspvalidator.org/进行检查。 或https://csp-evaluator.withgoogle.com/ 。
但是您确实要避免在任何CSP策略中指定'unsafe-inline'
。 使用'unsafe-inline'
几乎会破坏CSP的全部目的。
您想要对引起CSP错误的任何内联脚本执行的操作是:将脚本从文档中移出并将它们移到单独的文件中。 这就是重点。
但是,如果您确实必须指定'unsafe-inline'
,那么就处理问题中引用的特定错误而言,您只应为script-src
指定'unsafe-inline'
因为错误消息说: “拒绝执行内联脚本 。”
如果改为为default-src
指定'unsafe-inline'
,则这将导致浏览器无法对文档中的任何内联资源(样式表等)执行CSP检查,而不仅仅是脚本。
因此,如果唯一的问题是内联脚本,并且由于某种原因您无法通过将脚本移至单独的文件或为其指定哈希或随机数来解决该问题,则至少应仅指定'unsafe-inline'
对于script-src
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.