なぜWebhookのセキュリティが重要か
- 偽のWebhookリクエストを送って不要な処理を発生させる
- ペイロードを改ざんしてアプリケーションを不正に操作する
- 大量のリクエストでWebhookエンドポイントを過負荷にする
Firecrawl が Webhook に署名する方法
- リクエストが Firecrawl から送信されたこと
- ペイロードが改ざんされていないこと
シークレットキーの確認方法
webhook シークレットは厳重に管理し、決して公開しないでください。漏えいした可能性がある場合は、直ちにアカウント設定から再生成してください。
署名検証
署名の仕組み
X-Firecrawl-Signature
ヘッダーが含まれます:
- 生のリクエストボディ(JSON文字列)を取得
- シークレットキーを用いて HMAC-SHA256 ハッシュを生成
- 16進数の文字列に変換
- 先頭に
sha256=
を付与
実装例
ステップごとの検証
X-Firecrawl-Signature
ヘッダーから署名を取り出す- 受信した生のリクエストボディをそのまま取得する(先にパースしない)
- シークレットキーと生のボディを使ってHMAC-SHA256 を計算する
- タイミングセーフな比較関数で署名を比較する
- 署名が一致した場合のみ Webhook を処理する
セキュリティに関するベストプラクティス
署名は必ず検証する
タイミングセーフな比較を使う
- Node.js:
crypto.timingSafeEqual()
- Python:
hmac.compare_digest()
- その他の言語: 「constant-time」または「timing-safe」の比較関数を探してください