返回首页

Webhook 签名校验指南

在信任请求之前,必须基于原始 body 校验第三方签名。

最近更新: 2026-06-24

Webhook 签名校验的作用,是证明这条 payload 的确来自第三方,并且在传输过程中没有被篡改。它应该发生在你真正信任事件内容之前。

通用流程

  1. 读取原始请求 body。
  2. 读取第三方提供的签名 header。
  3. 用共享 secret 计算期望摘要。
  4. 用常量时间比较方式进行校验。
  5. 不匹配就拒绝。

常见错误

  • 用解析后的 JSON 做校验,而不是 raw body
  • 把 shared secret 打到日志里
  • 生产环境接受未签名请求

FAQ

哪些服务会使用签名?

Stripe、GitHub、Shopify、Slack 等大多数成熟平台都会这样做。

为什么要常量时间比较?

它可以减少基于时间差的侧信道泄露风险。

具体示例可看: