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

时间:2019-03-19 23:02:37

标签: security iframe content-security-policy

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

今天,尽管我想集成第三方日历预订系统(很偶然地)。他们使用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;

2 个答案:

答案 0 :(得分:1)

要使Calendly在您的网站上正常工作,您需要添加以下CSP规则:

frame-src https://calendly.com;
script-src https://assets.calendly.com;
style-src 'unsafe-inline';

答案 1 :(得分:0)

所以实际上答案很简单。我直接联系了calendly,简单的解决方案是更改我添加的网址。 https://calendly.com足以解决问题。

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