为什么我的开放式内容安全策略在Safari中仍然是一个问题?

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

我正在集成Stripe Checkout,并且一直在Safari中遇到CSP错误。我一直在调整我的CSP,以修复错误。

这是一个广泛使用的CSP的最新版本,用于查找该错误消失的基准:

<meta http-equiv="Content-Security-Policy" content="script-src * 'unsafe-inline';">

尽管即使运行了这种最宽松的CSP,我仍然在Safari中收到以下错误(由于某种原因,在Firefox中不是)。

[错误]拒绝执行脚本,因为脚本的哈希,现时或“ unsafe-inline”未出现在脚本的script-src指令中内容安全政策。(controller-c8316b84ec1741b377c2f37269945d8f.html,第0行)

此文件似乎是Stripe控制器资产。

一旦我得到错误排序,这就是我想使用的CSP:

<meta http-equiv="Content-Security-Policy"
          content="default-src 'self'; img-src 'self' https://*.stripe.com https://www.google-analytics.com; connect-src 'self' https://www.google-analytics.com https://checkout.stripe.com; script-src 'self' https://checkout.stripe.com https://js.stripe.com *.jquery.com *.cloudflare.com *.bootstrapcdn.com *.google-analytics.com 'unsafe-inline' 'unsafe-eval'; style-src https://*.bootstrapcdn.com *.stripe.com 'self' 'unsafe-inline'; frame-src https://checkout.stripe.com https://js.stripe.com https://hooks.stripe.com;">

我不知道是页面的CSP引发了错误还是Stripe的CSP?这是我在Stripe的V3.js(我的页面包含以启用Stripe检出)标题中看到的内容:

Content-Security-Policy: default-src 'self'; connect-src 'self' https://api.stripe.com https://errors.stripe.com; script-src 'self'; style-src 'self' 'unsafe-inline'; frame-src 'self'; img-src 'self' https://q.stripe.com; font-src data: https:; media-src 'none'; object-src 'self';

我认为此可能相关的原因是,因为您可以看到script-src指令不包含'unsafe-inline',而我的CSP确实包含了该内容。

safari content-security-policy stripe-checkout
1个回答
0
投票

好吧,我得到了这种分类,在此过程中我学到了两个重要的东西:

首先,CSP错误是由Safari扩展引起的!

首要经验是禁用所有扩展,并查看是否仍然出现错误。重新启用所有扩展仍然会导致错误,但是我的功能现在可以使用了。这导致了我学到的第二件事:

HTML按钮自动提交。我不知道为什么我的点击事件似乎在页面加载之前没有注册。将按钮更改为输入type = button可使我触发单击事件,并启动stripe.redirectToCheckout。

对我来说是很大的收获,希望对SO社区来说是小的收获?

检查您的扩展程序,并检查您的按钮,然后查看您的位置。

干杯。

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