为满足 PCI DSS v4 合规性,Google Pay 入驻沙盒化 iframe

2025年6月10日
Dominik Mengelt Developer Relations Engineer Payments

如果您正在开发或维护结账页面,您可能会遇到 PCI DSS v4,其中的 6.4.3 条涵盖以下要求:


在消费者的浏览器中加载和执行的所有付款页面脚本均按以下方式管理:

  • 实施一种方法来确认每个脚本已获授权。

  • 实施一种方法来确保每个脚本的完整性。

  • 维护一个包含所有脚本的库存,并附上书面业务或技术理由,以说明为什么每个脚本都是必要的。


遵守这一要求的一种方法是使用子资源完整性 (SRI) 这样的技术。但是,Google Pay JavaScript (pay.js) 构建和发布过程不允许使用 SRI 等技术所需的长寿命、稳定的哈希值。


使用沙盒化 iframe

使用沙盒化 iframe 可以满足任何合规要求,因为 iFrame 中的脚本将无法访问父级 DOM。请参阅以下示例图示:

sandboxed iframe
<iframe
  src="https://cdn.somewhereelse.com"
  allow="payment"
  sandbox="allow-scripts allow-popups allow-same-origin allow-forms">
</iframe>
JavaScript

在这种情况下,域“cdn.somewhereelse.com”将加载 Google Pay 的 pay.js JavaScript 文件。交易成功后,如果需要,内部 iframe 可以通过 window.postMessage () 等机制与父页面进行通信。

为了使 Google Pay 适用于所有浏览器,除了 allow = ”payment” 之外,我们还需要以下 4 个沙盒属性值

  • allow-scripts

允许 iframe 执行脚本(例如 pay.js)

  • allow-popups

允许嵌入式页面创建“子浏览上下文”。在实践中,当用户单击链接时,此标志可使嵌入的 iframe 能够打开新的选项卡和窗口。

  • allow-same-origin

如果未设置,则浏览器可能在各种场合遭遇失败。如果已设置,则 iframe 可以访问父级存储和 Cookie。

  • allow-forms

允许 Google Pay 登录表单等表单提交数据。


请参阅测试页面以查看各种 iframe 沙盒值。


Shopify 成功通过 PCI DSS v4 认证

Google Pay 与 Shopify 合作实施上述解决方案。Shopify 通过使用沙盒化 iframe 显示 Google Pay 按钮,从而成功通过了 PCI DSS v4 审核。以下是 Shopify 的评价:

我们构建了 Shopify Checkout,使 Google Pay 代码能够在安全的沙盒环境中执行,从而保持结账的完整性,并符合 PCI DSS V4 的要求。

Ilya Grigorik,Shopify 的杰出工程师


如需了解有关 Shopify 如何使用沙盒化 iframe 构建结账解决方案的更多信息,请参阅他们的博客文章“Powering Shopify's High-Performance, PCI DSS v4 Compliant Checkout with Sandboxing”获取相关见解。


结论

将您的 Google Pay 集成装进沙盒化 iframe 中有助于您遵守 PCI DSS v4 要求。如需在实施过程中获得更多帮助,请登录 Google Pay 以及 Wallet Console 以创建支持服务工单。此外,您可以在 Discord 的 #payments 频道加入开发者社区。

在 X 上关注 @GooglePayDevs,了解未来的更新内容。如果您有任何疑问,请在推文中标记 @GooglePayDevs,并加入 #AskGooglePayDevs 标签。