Shopify 安全与风控

Storefront 私有令牌写进前端会有什么后果

现象#

浏览器 Network 里能看到 Shopify-Storefront-Private-Token,复制后用 curl 就能查到未发布商品、metafield 和客户订单。

原因#

  • 私有令牌设计为只在服务端使用,放进 bundle 等于把店铺读权限公开
  • 缺少 Shopify-Storefront-Buyer-IP 时 Shopify 无法区分买家,容易限流且风控失效
  • 构建时把 SHOPIFY_STOREFRONT_PRIVATE_TOKEN 注入客户端变量,打包后无法撤回
  • 私有令牌申请的 unauthenticated scope 过多,泄露后可读客户与草稿商品

处理步骤#

  1. 在前端产物里搜 Shopify-Storefront-Private-Token 与令牌前缀,确认泄露范围
  2. 把调用移到服务端路由或 serverless 函数,浏览器只拿渲染后的 JSON
  3. 浏览器端改用 public token,请求头换成 X-Shopify-Storefront-Access-Token
  4. 在 Headless channel 轮换私有令牌,旧值立即失效,再更新服务端环境变量
  5. 服务端转发时补上 Shopify-Storefront-Buyer-IP,并按需收敛 scope

验收标准#

生产 bundle 搜不到私有令牌,浏览器只出现 public token,旧私有令牌请求返回 401,服务端请求带买家 IP。

本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。