如何允许带有内容安全策略 (CSP) 的 iframe

dav*_*er8 6 security iframe content-security-policy

我正在为我的网站设置内容安全策略 (CSP)。过去几周我一直在几个网站上使用它,没有任何问题。我已经成功集成了外部脚本和其他各种东西。

今天虽然我想集成一个第三方日历预订系统(Calendly)。他们将 iframe 用于弹出窗口,并且在我的一生中,我无法在安全策略中接受它。

我不断收到此错误“拒绝框架 'url-to-calendly',因为它违反了以下内容安全策略指令:“frame-src”...

我已经厌倦了将它添加到 frame-src 组件中 frame-src https://assets.calendly.com; frame-src 'self' https://assets.calendly.com; frame-src 'self' https://assets.calendly.com 'unsafe-inline'; frame-src https://assets.calendly.com 'nonce-lots-of-digits'; frame-src 'self' https://assets.calendly.com 'nonce-lots-of-digits';

child-src也在指令下做了同样的事情。由于 frame-src 在第二版中不再使用。同样,这也不起作用。这是我的完整 CSP。非常感谢这里的任何帮助 - 谢谢。附言。我正在使用 chrome 开发工具。它似乎也不适用于 Safari。

Content-Security-Policy: 
script-src 'nonce-4dfb7738f82d40efc1b73a80491d6dd0bb839173' 'unsafe-inline'; object-src 'none'; 
default-src 'nonce-77184b203c574dfd8ecc7fac417bf078242d4657'; 
img-src 'self' https://www.google-analytics.com www.google-analytics.com https://stats.g.doubleclick.net; 
style-src 'self' https://assets.calendly.com; 
font-src 'self'; 
connect-src 'self' https://www.google-analytics.com www.google-analytics.com https://stats.g.doubleclick.net; 
base-uri 'none'; 
child-src https://assets.calendly.com; 
frame-src https://assets.calendly.com;
Run Code Online (Sandbox Code Playgroud)

小智 8

要使 Calendly 在您的网站上运行,您需要添加以下 CSP 规则:

frame-src https://calendly.com;
script-src https://assets.calendly.com;
style-src 'unsafe-inline';
Run Code Online (Sandbox Code Playgroud)

  • 我必须在哪里添加这些? (13认同)
  • @KumailR 这取决于您使用的内容,但您用于为网站提供服务的服务是您指定 CSP 标头的地方。例如nginx、express等。 (2认同)

dav*_*er8 5

所以实际上答案非常简单。我直接联系日历,简单的解决方案是更改我添加的网址。https://calendly.com足以做到这一点。

所以你给@andrii 的网址是正确的 - 谢谢。但是,不建议使用“unsafe-inline”。在任何来源上使用它都会使您的 CSP 几乎毫无意义。