自定义应用令牌权限开得太大怎么收敛才安全
现象#
一个只用来同步库存的 custom app,在 API credentials 里勾了 write_orders、write_customers、write_discounts,令牌还是长期不过期的 shpat_。
原因#
- 建应用时把 Admin API 权限全选,write 又隐含 read,实际可用范围远超同步库存
- 旧版后台创建的 custom app 改 scope 后必须卸载重装才会签发新令牌
- 同一枚令牌被多个脚本共用,无法判断哪段代码真正需要哪个权限
- 令牌没有过期时间,泄露后只能靠人工发现,权限越大暴露窗口越长
处理步骤#
- 先看服务器日志与
graphql.json调用记录,列出真实用到的 query 与 mutation - 打开
Develop apps里该应用的配置页,只勾read_products与write_inventory - 保存后卸载再重装该应用,让新
shpat_按新 scope 签发,旧令牌随即失效 - 按系统拆成多个 custom app,库存、订单、财务各用各的令牌,避免一处泄露全店失守
- 用
currentAppInstallation { accessScopes { handle } }核对实际授予范围
验收标准#
accessScopes 只剩业务必需的几项,用旧令牌调 orders 返回 403,库存同步任务仍正常。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。