内容安全策略通配符似乎被忽略

问题描述 投票:0回答:5

为了提供一些上下文,这是一个 Electron 应用程序,使用 file://

加载 index.html

内容安全策略似乎正在收缩:

Refused to connect to 'https://o944978.ingest.sentry.io/api/5893671/envelope/?sentry_key=0a6134a5d89d40c4954c6144b0e63c64&sentry_version=7' because it violates the following Content Security Policy directive: "default-src 'unsafe-inline' 'self' 'unsafe-eval' data: *.sentry.io *.cloudfront.net". Note that 'connect-src' was not explicitly set, so 'default-src' is used as a fallback.

该 URL 显然与通配符 *.sentry.io 匹配,还是我遗漏了什么?

electron content-security-policy
5个回答
2
投票

*.sentry.io
源代码由docs.sentry.io
文档推荐,即使您将其放入
default-src
指令而不是
connect-src
指令中,它也绝对应该有效。 CSP 支持通配符指定子域。

CSP 可以阻止允许的来源的唯一原因是 NoScript/uBlock 等浏览器插件的存在。


1
投票
我要在这里回答自己:你不能。

这 2 个选项是:禁用 Web 安全或启动静态 Web 服务器。


0
投票
如果没有看到你的实现,很难知道,但这里有一些建议:

    首先在CSP中仅使用*.sentry.io进行测试;添加错误中出现的域。这个想法是想出使其工作的最小 CSP。
  1. 我的 CSP 在列表末尾有“data:”。我不记得为什么,但我认为是有原因的......
  2. 确保用分号“;”结束每个列表
(作为帖子回答,因为我没有足够的声誉来发表评论)


0
投票
尝试提供帮助的建议:

您是否也可以尝试

显式设置connect-src


connect-src sentry.io https://*.sentry.io *.sentry.io;
(也许还有其他需要的主机)

您仍然遇到此错误吗?


0
投票
您必须明确添加

*.ingest.sentry.io

*.ingest.us.sentry.io
内容安全策略级别 3 规范表示通配符:

匹配主机子域(及其任何子域的子域等)上的任何资源

但我发现情况并非如此,必须显式添加所有子域。

© www.soinside.com 2019 - 2024. All rights reserved.