Storefront 私有令牌写进前端会有什么后果
现象#
浏览器 Network 里能看到 Shopify-Storefront-Private-Token,复制后用 curl 就能查到未发布商品、metafield 和客户订单。
原因#
- 私有令牌设计为只在服务端使用,放进 bundle 等于把店铺读权限公开
- 缺少
Shopify-Storefront-Buyer-IP时 Shopify 无法区分买家,容易限流且风控失效 - 构建时把
SHOPIFY_STOREFRONT_PRIVATE_TOKEN注入客户端变量,打包后无法撤回 - 私有令牌申请的 unauthenticated scope 过多,泄露后可读客户与草稿商品
处理步骤#
- 在前端产物里搜
Shopify-Storefront-Private-Token与令牌前缀,确认泄露范围 - 把调用移到服务端路由或 serverless 函数,浏览器只拿渲染后的 JSON
- 浏览器端改用 public token,请求头换成
X-Shopify-Storefront-Access-Token - 在 Headless channel 轮换私有令牌,旧值立即失效,再更新服务端环境变量
- 服务端转发时补上
Shopify-Storefront-Buyer-IP,并按需收敛 scope
验收标准#
生产 bundle 搜不到私有令牌,浏览器只出现 public token,旧私有令牌请求返回 401,服务端请求带买家 IP。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。