通过检查每个 Webhook 请求的 HMAC-SHA256 签名,验证它确实来自 Firecrawl。这可以防止攻击者伪造 payload,并让你在处理数据之前确认其可信性。
密钥#
你的 webhook 密钥可在账户设置中的 Advanced 选项卡 找到。每个账户都有一个唯一的密钥,用于为所有 webhook 请求签名。
Warning
请妥善保管你的 webhook 密钥,切勿公开泄露。如果你认为 密钥已遭泄露,请立即在账户设置中重新生成。
签名验证#
每个 webhook 请求都会包含一个名为 X-Firecrawl-Signature 的请求头:
如何验证#
- 从
X-Firecrawl-Signature头中提取签名 - 获取原始请求体(不要先解析)
- 使用你的密钥计算 HMAC-SHA256
- 使用时间安全的比较函数比较签名
实现#
最佳实践#
- 验证每个请求。 在处理 Webhook 负载之前,始终先检查签名。对于任何未通过验证的请求,返回
401状态并予以拒绝。 - 使用时间安全的比较。 标准字符串比较可能泄露时间信息。在 Node.js 中使用
crypto.timingSafeEqual(),在 Python 中使用hmac.compare_digest()。 - 通过 HTTPS 提供你的端点。 这样可确保 Webhook 负载在传输过程中被加密。

