Article

Webhookのセキュリティ対策とは?署名検証・リプレイ攻撃・再送対応の設計ポイント

外部サービスとシステムを連携するときによく利用されるのがWebhookです。

例えば、

  • 決済完了を受け取る
  • 予約完了を受け取る
  • 問い合わせ発生を通知する
  • GitHubなどの更新イベントを受け取る
  • SaaS上のデータ変更を業務システムへ反映する
  • AI処理の完了通知を受け取る

といった用途があります。

Webhookは便利な一方、インターネット上に受信用URLを公開することが多いため、セキュリティ設計を誤ると、

  • 第三者から偽のWebhookを送信される
  • 同じWebhookを何度も実行される
  • 再送によって二重登録・二重決済が発生する
  • Webhookのシークレットが漏れる
  • 大量リクエストによってシステム負荷が上がる

といった問題につながります。

結論からいうと、Webhookのセキュリティでは、

「送信元が本物か確認する署名検証」と「同じイベントを複数回処理しない冪等性」を中心に設計すること

が重要です。

さらに、

  • HTTPS
  • タイムスタンプ検証
  • リプレイ攻撃対策
  • Webhook ID・イベントIDの重複チェック
  • シークレット管理
  • レート制限
  • 非同期処理
  • ログ・監視

などを組み合わせます。

この記事では、Webhookを本番の業務システムで利用するときに押さえておきたいセキュリティ対策と再送設計について、具体例を交えて解説します。

Webhookとは

Webhookとは、あるサービス上でイベントが発生したときに、別のシステムへHTTPリクエストを送信して通知する仕組みです。

例えばオンライン決済を考えてみましょう。

ユーザーが決済すると、

“`text
ユーザー

決済サービス

決済完了

Webhook送信

自社システム

注文を「支払済み」に変更

Contact

お問い合わせ

システム導入、Webアプリ開発、AI導入、業務委託での開発支援などのご相談を受け付けています。

要件が固まっていなくても大丈夫です。使う方・運用する方の視点で整理し、分かりやすく進めます。

まずはお気軽にお問い合わせください。