Stripe Connect:内容安全策略问题

时间:2021-05-13 07:31:44

标签: javascript php stripe-payments content-security-policy

即使使用元标记,它仍然显示错误并且 Iframe 无法正常工作

<meta http-equiv="Content-Security-Policy" content="
         default-src *; 
         style-src 'self'  'unsafe-inline'; 
         script-src * 'self' https://checkout.stripe.com 'unsafe-inline' 
         connect-src : * 'self' https://checkout.stripe.com  'unsafe-inline' 
         frame-src : * 'self'  https://checkout.stripe.com  'unsafe-inline' 
         'unsafe-eval' 
         ;" >

链接参考:https://stripe.com/docs/security/guide#content-security-policy

错误:内容安全策略:页面设置阻止加载内联资源(“script-src”)

我也使用 header() 来设置它,但这也不起作用。任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

您缺少 Stripe 文档中描述的 img-src https://*.stripe.com

此外,单独的星号字符也不能用作“任何资源”(代码中错误使用的示例:default-src *)。您需要将它用作 <host-source> 的一部分(例如 *.example.com)。有关详情,请参阅 MDN docs

答案 1 :(得分:0)

您的 CSP 有很多错误:

  1. 您遗漏了分号 ; 来分隔 script-src / connect-src / frame-src 指令列表。

  2. :connect-src : * ...frame-src : * ...

    中也不是必需的
  3. 'unsafe-inline''unsafe-eval' 指令中删除 connect-srcframe-src,那里不支持这些指令

  4. *(星号)covers 任何主机源,如 https://checkout.stripe.comwss://checkout.stripe.com

但这些并不重要,这些只是导致您真正拥有的 CSP:

default-src *; 
style-src 'self'  'unsafe-inline'; 
script-src * 'self' 'unsafe-inline' 'unsafe-eval'

此 CSP 除了 data:-Urls 使用之外没有任何限制。因此错误:

Content Security Policy: The page’s settings blocked the loading of a resource at inline (“script-src”)

不能属于您的 CSP。
看起来您已经在某处发布了 CSP 标头。因此,通过 <meta> 或 HTTP 标头的第二个 CSP 没有达到预期的效果。

检查您在浏览器中真正获得的 CSP 标头,教程是 here

检查 Nginx 中的网络服务器配置的 add_header Content-Security-Policy ....htaccess 文件(如果是 Apache)是否存在 Header set Content-Security-Policy ...
或者您可能已经安装了一些插件来管理 CSP 标头。