要经营一家安全的店铺,并不需要你是工程师。但有几项技术机制,决定了一次攻击是成功还是失败。你会在应用评测、安全问卷以及 Shopify 自己的公告中看到它们。了解它们的工作原理,有助于你向应用供应商提出更精准的问题。
下面每项技术都用通俗的语言拆解:它做什么、能阻止什么,以及在哪里会失效。
- 通行密钥将密码从最常见的攻击方式——钓鱼——中移除。
- 沙盒是跟踪像素和 Shopify Functions 无法读取你结账信息的原因。
- SRI 和 CSP 可以防范被篡改的文件,但无法防范可信供应商以“设置”形式传递的代码——也就是 2026 年 10 月劫持事件所用的手法。
- 没有任何单一技术足够。 真正的保护来自多层防护,加上更少、选择更精当的应用。
概念插图:通行密钥、沙盒和签名令牌共同守护一家现代网店。
属于主题中心的一部分浏览 Shopify 安全专题中心 →
1. 通行密钥与安全密钥(WebAuthn)
它做什么: 你使用设备(指纹、人脸识别或 PIN 码)或实体硬件密钥登录,而不是输入密码。私钥永远不会离开你的设备。
它能阻止什么: 钓鱼。通行密钥与真实的网站地址在密码学上绑定,因此即使伪造的“Shopify 登录”页面看起来一模一样,也无法使用它。如今 AI 工具能够编写极具说服力的钓鱼邮件,这一点就显得更加重要。
它在哪里会失效: 被盗且已解锁的笔记本电脑,或你自己邀请进来的攻击者(作为协作者)。
在 Shopify 上: 支持员工两步验证,也支持 Shop Pay 客户。
2. 签名的短期令牌(OAuth 和令牌交换)
它做什么: 应用不再依赖长期有效的密码,而是获得一个由 Shopify 签名的密码学令牌,用来证明其代表的是哪家店铺。短期令牌会很快过期,并需要定期刷新。
它能阻止什么: 被重放或伪造的请求,以及令牌泄露后的长期损害。
它在哪里会失效: 你为自定义应用或代理商创建的长期令牌。你仍需像对待总钥匙一样对待它们。
3. 最小权限范围
它做什么: 每个应用都明确声明它可以读取或写入的内容:商品、订单、客户或主题。
它能阻止什么: 应用(或控制该应用的攻击者)越出其预期职责范围。菜单应用没有理由读取客户订单;评价应用也没有理由编辑你的主题。
它在哪里会失效: 权限范围只限制后端 API 的访问。它们无法限制应用自身的脚本在页面加载后,于买家浏览器中做什么。
4. 沙盒
它做什么: 在一个隔离的环境中运行代码,使其无法访问页面或底层系统的其他部分。
- Web 像素: 应用像素运行在 strict 沙盒中(一个无法访问页面的 Web Worker);自定义像素运行在沙盒化 iframe 中,无法触及顶层页面。
- Shopify Functions: 是 WebAssembly 模块,对指令数、内存和输入有严格限制;除 Enterprise 套餐的自定义应用外,没有网络访问权限。
它能阻止什么: 跟踪脚本读取信用卡字段,或折扣函数调用外部服务器。
它在哪里会失效: 普通店铺前台脚本(包括大多数应用嵌入)并不在沙盒中。它们拥有对页面的完整访问权限。
5. 内容安全策略(CSP)
它做什么: 一个 HTTP 响应头,告诉浏览器页面可以从哪些域名加载脚本、与哪些域名建立连接,以及允许哪些域名将其嵌入框架。
它能阻止什么: 从未知域名加载的脚本,以及点击劫持攻击(Shopify 要求应用在其管理页面上设置 frame-ancestors)。
它在哪里会失效: 一家安装了许多应用的店铺需要一份庞大的允许列表,而来自已批准域名的恶意代码仍然会被放行。CSP 在结账这类小型、严格管控的页面上最为有效。
6. 子资源完整性(SRI)
它做什么: 你为 script 标签附加一个密码学哈希值(指纹);如果文件内容发生变化,浏览器会拒绝加载该文件。
它能阻止什么: 托管在 CDN 上、被篡改的文件。
它在哪里会失效: 那些合理地经常变化的文件,以及以数据形式传递的代码。在 2026 年 10 月的劫持事件中,应用在 Shopify CDN 上的文件是干净的,恶意代码来自供应商的设置 API。SRI 无法防范这种情况。MDN 文档也注明了这些限制。
7. PCI DSS 4.0:支付页面脚本规则
它是什么: 支付卡行业的安全标准。其中两项较新的要求专门针对“电子盗刷”(e-skimming):
- 6.4.3: 对支付页面上的每个脚本建立清单,并对每个脚本进行说明和验证。
- 11.6.1: 检测支付页面及其安全响应头的未授权变更。
PCI 安全标准委员会已于 2025 年发布了关于这些规则的指南。在 Shopify 上,结账页面由 Shopify 控制,这也是 checkout.liquid 和结账 script 标签被停用的一个关键原因。我们没有找到任何官方 Shopify 页面,能为每种配置都明确这两项要求由谁负责。如果你需要合规证明,请向 Shopify 和你的支付服务商确认。
8. 3D Secure(3DS2)
它做什么: 由买家的银行确认支付,通常在其手机银行应用中完成。
它能阻止什么: 许多盗用银行卡号的行为。它适用于欧洲经济区的银行卡支付。
它在哪里会失效: 犯罪分子可以通过假店铺中继 3DS 验证步骤,正如 Sansec 在 GorgonAgora 网络中所记录的那样。买家批准的是他们以为真实的付款。
9. 机器人挑战
它做什么: 一种测试,例如 reCAPTCHA 或 hCaptcha,对真实买家来说很快,而对自动化机器人来说则代价高昂。
它能阻止什么: 限量库存发售期间的自动化结账、卡片测试攻击,以及某些形式的抓取。
它在哪里会失效: 机器人测试会增加结账的摩擦,而 AI 购物代理使情况更加复杂:一些自动化访问者现在实际上是通过 AI 助手购物的真实客户。Shopify 的代理文档使用签名请求和信任等级来区分两者。
10. 取舍与一条简单规则
| 技术 | 防范的风险 | 无法防范的风险 |
|---|---|---|
| 通行密钥 | 针对员工登录的钓鱼 | 你邀请进来的不良协作者 |
| 签名令牌 | 伪造或重放的请求 | 泄露的长期令牌 |
| 权限范围 | 应用通过 API 越权 | 浏览器中的脚本行为 |
| 沙盒 | 像素或 Functions 读取结账信息 | 普通店铺前台脚本 |
| CSP | 来自未知域名的脚本 | 来自允许域名的恶意代码 |
| SRI | 被篡改的静态文件 | 以设置数据形式传递的代码 |
| 3DS | 简单的盗卡消费 | 假店铺中被中继的批准 |
一条简单规则:你安装的每个应用,都会增加一段你无法控制的代码。 优先选择权限范围窄、不接触结账、并且清楚说明在你的店铺前台运行什么内容的应用。
11. 向任何应用供应商都应该问的问题
- 你请求了哪些权限范围?每一项的理由是什么?
- 你的应用是否会在我的店铺前台或结账页面上运行代码?这些代码从哪里加载?
- 你应用的设置字段是否可以包含 JavaScript 或 HTML?谁可以编辑它们?
- 你如何保护自己的管理后台和内部工具(双重验证、访问日志)?
- 卸载后,我的数据和店铺前台会发生什么?
查看 Navi+ 如何回答这些问题,或阅读 Shopify 已经为你做了什么。
来源
- Shopify Help,Two-step authentication:https://help.shopify.com/en/manual/your-account/account-security/two-step-authentication
- Shopify.dev,Token exchange:https://shopify.dev/docs/apps/build/authentication-authorization/access-tokens/token-exchange
- Shopify.dev,Web pixels:https://shopify.dev/docs/apps/build/marketing-analytics/pixels
- Shopify.dev,Shopify Functions:https://shopify.dev/docs/api/functions
- Shopify.dev,Set up iframe protection:https://shopify.dev/docs/apps/build/security/set-up-iframe-protection
- MDN,Subresource Integrity:https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity
- PCI Security Standards Council,Payment Page Security and Preventing E-Skimming:https://blog.pcisecuritystandards.org/new-information-supplement-payment-page-security-and-preventing-e-skimming
- Sansec,GorgonAgora:https://sansec.io/research/gorgonagora-fake-storefront-skimming-network
- cside,HulkApps Shopify checkout hijack:https://cside.com/blog/hulkapps-shopify-checkout-hijack
- Shopify.dev,Agents:https://shopify.dev/docs/agents