为什么 Webhook 安全至关重要
- 发送伪造的 webhook 请求以触发不必要的 actions
- 篡改负载数据以操纵你的应用
- 通过大量请求使你的 webhook 端点过载
Firecrawl 如何对 Webhook 进行签名
- 请求来自 Firecrawl
- 有效负载未被篡改
查找你的密钥
请妥善保管你的 webhook 密钥,切勿公开泄露。如果你认为
密钥已遭泄露,请立即在账户设置中重新生成。
签名校验
签名的工作原理
X-Firecrawl-Signature
的请求头,格式如下:
- 取原始请求体(JSON 字符串)
- 使用你的密钥生成 HMAC-SHA256 哈希
- 转为十六进制字符串
- 在前面加上
sha256=
实现示例
分步验证
- 从
X-Firecrawl-Signature
头中提取签名 - 获取原始请求体(按收到的原始字节,不要先解析)
- 使用你的密钥和原始请求体计算 HMAC-SHA256
- 使用时间安全的比较函数比较签名
- 仅当签名匹配时才处理该 webhook
安全最佳实践
始终验证签名
使用时间常数/计时安全的比较
- Node.js:
crypto.timingSafeEqual()
- Python:
hmac.compare_digest()
- 其他语言:查找“constant-time”或“timing-safe”的比较函数