Webhook 与集成
校验 webhook 签名
要在解析 JSON 之前,对原始请求体计算签名,并用常量时间比较。把载荷重新序列化会改变字节,签名从此再也对不上。
步骤
- 把原始请求体作为字节抓住。多数框架默认给你的是已解析的对象,那时已经太迟。
- 就对那些字节本身,用你这一端的密钥计算签名。
- 用常量时间比较来核对,而不是字符串相等。
- 只有在签名校验通过之后,才去解析 JSON。
- 拒绝一切不通过的,并且记录投递 ID 而不是请求体。
如何验证结果
真实的投递能通过校验,而同一个载荷改动一个字符就通不过。
常见的出错之处
- 在算签名之前先解析、又重新序列化。
- 解析请求体的中间件抢在你的处理函数之前把流吃掉了。
- 对签名用了朴素的
===,它会从耗时上泄漏。
这篇文章解决了你的问题吗
这没有帮上忙
请写信给我们,附上平台与版本、你走过的步骤、期望的结果,以及相关的工作区或二维码。附上任何东西之前,请先遮蔽全部机密信息。
写信给支持团队