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 与请求头用于审计。