Node.js 示例
const crypto = require('crypto');
function verifySignature(payload, signature, secret) {
const expected = crypto
.createHmac('sha256', secret)
.update(payload, 'utf8')
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(expected),
Buffer.from(signature)
);
}
注意事项
- 必须使用原始请求体进行签名校验。
- 校验失败返回 401,不进入业务逻辑。
- 记录失败来源 IP 与请求头用于审计。