拒绝框架 '' 因为它违反了以下内容安全策略指令

Tom*_*mmy 4 nginx confluence content-security-policy

我们使用 Confluence Companion 工具在本地编辑来自 Confluence 的文件(https://confluence.atlassian.com/doc/edit-files-170494553.html),但自从该工具的上次更新以来,它不再起作用。我发现这是因为我们在 NGINX 中设置了 CSP 指令,但无论我做了什么更改;没有任何效果。

原始 CSP 指令:

add_header Content-Security-Policy "default-src https: wss: blob: goedit: 'unsafe-inline' 'unsafe-eval'; connect-src https://*.atlassian.com 'self' ws:; img-src blob: https: data: 'unsafe-inline' *; font-src https: data:" always;
Run Code Online (Sandbox Code Playgroud)

结果: Refused to frame '' because it violates the following Content Security Policy directive: "default-src https: wss: blob: goedit:". Note that 'frame-src' was not explicitly set, so 'default-src' is used as a fallback.

所以我想,让我们添加 frame-src;

add_header Content-Security-Policy "default-src https: wss: blob: goedit: 'unsafe-inline' 'unsafe-eval'; connect-src https://*.atlassian.com 'self' ws:; frame-src 'self'; img-src blob: https: data: 'unsafe-inline' *; font-src https: data:" always;
Run Code Online (Sandbox Code Playgroud)

但现在它报告了;

Refused to frame '' because it violates the following Content Security Policy directive: "frame-src 'self'".
Run Code Online (Sandbox Code Playgroud)

有点迷失在这里,首先为什么它加载......什么都没有?只是'',我希望那里有一个网站或其他什么,但无论我对frame-src 进行了何种更改,它都会不断抱怨。

我试过的:

frame-src 'self';
frame-src '*';
frame-src '';
frame-src 'self' data:;
frame-src '*.mydomain.com';
frame-src 'none';
Run Code Online (Sandbox Code Playgroud)

甚至尝试通过 X-FRAME-OPTIONS 允许所有帧以及添加帧祖先并以各种方式组合上述所有内容,但结果是相同的。

帮助是非常appriciated。

谢谢!

Ale*_*ght 5

Confluence 7.3+ 启动带有前缀为atlassian-companion:. 这是使用隐藏的 iframe 构造的,以防止页面重定向。

因此,要解决此问题,请在您的内容安全策略中添加atlassian-companion:您的default-srcframe-src排除项。例如:frame-src atlassian-companion:;