用 IP 白名单校验 Shopify Webhook 为什么不可靠
现象#
防火墙按网上一份 23.227.32.0/19 放行,稳定几周后订单事件突然全断,Logs 里显示连接被拒,而应用里的 HMAC 代码一行没改。
原因#
- Shopify 不公布投递出口网段,官方说明出口 IP 会随基础设施变化,静态白名单必然过期
- 白名单放在网络层,IP 一变请求根本到不了应用,连 HMAC 都来不及验
- 网上流传的网段多是店铺前台 CDN 或历史地址,与 webhook 投递不是同一套出口
- 只靠 IP 放行会让人误以为不必验签,伪造请求从别的入口进来时毫无拦截
处理步骤#
- 把防火墙从「按源 IP 放行」改成「只放行到
/webhooks这一个路径」 - 应用入口强制校验
X-Shopify-Hmac-Sha256,失败返回 401 并写审计日志 - 用
X-Shopify-Shop-Domain与已安装店铺清单比对,未知店铺直接丢弃 - 安全策略要求固定出口时,改用
pubsub://或 EventBridge 投递 - 封掉其余入站端口后用 CLI 触发一次,确认仍能收到且验签通过
验收标准#
除 /webhooks 外的入站全部关闭后订单事件照常到达,伪造 body 的请求稳定返回 401。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。