编码与安全指南

HMAC Webhook 验证:对原始请求字节验签

保留原始载荷并约定编码,结合时间戳、重放限制和 MAC 验证。

Nav Tools ·

使用带密钥的认证值

HMAC 通过秘密密钥和密码学哈希结构认证消息,共享同一密钥的接收方可校验约定字节。

不能自行拼接密钥后求摘要,应遵守提供方的算法与签名原文结构。

保留原始请求体

解析 JSON 后重新序列化可能改变空白、键顺序和转义,重建内容会产生不同 MAC。

框架解析请求体前保留原始字节,协议签署原始请求体时必须使用这些字节。

{"id":1,"ok":true}
{"ok":true,"id":1}
Equivalent object values; different signed bytes.

约定认证值编码

Hex 与 Base64 是同一 MAC 字节的不同表示,还需核对大小写、前缀和签名覆盖字段。

用测试密钥和消息对比实现,本站输出应按提供方请求头规范进行解码或表示转换。

认证不能单独阻止重放

MAC 有效不代表请求新鲜,协议通常还包含签名时间戳和投递 ID。

后端使用库提供的恒定时间比较,限制协议规定的时间窗口,并在产生副作用前对事件 ID 去重。

参考资料

← 编码与安全指南