Webhook 签名与载荷测试器

本地 Web Crypto

使用提供商预设和测试用例生成、验证字节精确的 Webhook HMAC 签名。

Payload、Secret 和签名只留在内存;此静态工具不接收公网 Webhook。

{
  "action": "opened",
  "repository": {
    "id": 1296269,
    "full_name": "nobuf/example"
  }
}

UTF-8 字节

99

JSON

有效 JSON

事件类型

ID

签名证据

已准备验证精确 Webhook 证据
生成测试签名或粘贴已捕获的提供商 Header,然后运行验证。

负向测试矩阵

服务端验证示例

// Read raw request bytes before JSON parsing. Never log the secret.
const crypto = require('node:crypto')
const signed = rawBody
const expected = crypto.createHmac('sha256', secret).update(signed, 'utf8').digest('hex')
// Compare decoded bytes with crypto.timingSafeEqual after validating lengths.

使用方法

  1. 01

    选择签名方案

    选择提供商预设或通用 HMAC 算法,签名密钥仅保留在浏览器内存。

  2. 02

    提供精确证据

    粘贴或打开未经改变的 UTF-8 Payload、签名 Header 和时间戳,并让格式化 JSON 保持独立。

  3. 03

    验证并复现

    检查签名与重放结果、运行确定性负向用例、导出无密钥报告并复制服务端验证代码。

常见问题

页面能接收公网 Webhook 吗?

不能。静态浏览器工具没有公网服务器端点;它会在本地验证已捕获证据,并帮助复现接收端代码。

为什么格式化 JSON 会破坏有效签名?

签名覆盖精确字节。空白、换行、Key 顺序或编码变化都会产生不同 HMAC,即使解析后的 JSON 值看起来相同。

Secret 和 Payload 会上传或保存吗?

不会。Web Crypto 在本地运行,工作区不会把 Secret、Payload 或签名写入持久浏览器存储。

有效签名能阻止重放攻击吗?

不能单独阻止。带时间戳的提供商还需要服务端容差检查,并在应用中持久去重 Event 或 Delivery ID。

继续使用其他专注的浏览器端工具。

全部工具

默认本地处理;远程数据来源会明确说明。

© 2026 Nobuf

Nobuf

由浏览器驱动的快速、本地优先实用工具。