Webhook シークレット生成ツール

Webhook の署名検証や HMAC 認証に使う安全なシークレットを、ブラウザだけで生成します。

ブラウザ内完結

Webhook シークレット生成ツール

API コールバックの認証、Webhook 署名の検証、サービス間通信の確認に使える秘密鍵を作ります。

シークレット強度

本番環境向けの推奨デフォルトです。

出力形式

読みやすく、環境変数にも置きやすい形式です。

プレフィックス設定

多くの webhook 連携で使いやすい既定値です。

シークレット

このブラウザでは安全な乱数生成を利用できません。

.env 形式

WEBHOOK_SECRET=
値は環境変数または secret manager に保存してください。

Webhook シークレットの説明

Webhook シークレットとは?

Webhook シークレットは、送信側と受信側で共有する秘密のランダム値です。多くの場合 HMAC 署名の生成や検証に使われ、受信側はその値を使ってリクエストが正当で改ざんされていないことを確認します。

Webhook シークレットが重要な理由

Webhook シークレットは、偽のリクエスト、ペイロードの改ざん、許可されていないイベント注入、認証なしのエンドポイントの露出などから守るのに役立ちます。

Webhook 署名検証の流れ

  1. 1送信側は、共有シークレットと raw のリクエストボディから署名を作成します。
  2. 2送信側は、その署名を HTTP ヘッダーに含めます。
  3. 3受信側は、raw のリクエストボディを読み取ります。
  4. 4受信側は、同じシークレットで自分の署名を作成します。
  5. 5受信側は、定数時間比較で両方の署名を照合します。
  6. 6一致した場合は、そのリクエストを受け入れます。
  7. 7一致しない場合は、そのリクエストを拒否します。

JSON をパースする前に、必ず raw のリクエストボディで署名を検証してください。

推奨される長さ

多くの本番 webhook 連携では、少なくとも 32 random bytes を使うのが目安です。このツールの既定値は、余裕を持たせて 48 random bytes にしています。

Webhook シークレットと API キーの違い

項目Webhook シークレットAPI キー
主な目的受信した webhook payload を検証するAPI リクエストを認証する
方向送信側から受信側へクライアントから API へ
よくある用途HMAC 署名の検証API アクセス制御
公開してよいかいいえいいえ
保存場所環境変数または secret manager環境変数または secret manager

Webhook のセキュリティベストプラクティス

  • raw のリクエストボディを必ず検証する。
  • 署名検証の前に JSON をパースしない。
  • 定数時間比較を使う。
  • 署名がないリクエストは拒否する。
  • 署名が不正なリクエストは拒否する。
  • HTTPS を使う。
  • 漏えいした可能性がある secret はローテーションする。
  • secret は環境変数または secret manager に保存する。
  • secret をリポジトリにコミットしない。
  • Stripe、GitHub、Slack、Shopify、Discord などは、各サービスのルールに従う。

よくある実装ミス

  • raw ボディではなく、パース済みオブジェクトで検証してしまう。
  • 短すぎるシークレットや推測しやすい値を使う。
  • シークレットをログ出力したり、解析ツールへ流してしまう。
  • 署名がないリクエストを受け入れてしまう。
  • 同じシークレットを何箇所でも使い回してしまう。

よくある質問

Webhook シークレットとは何ですか?

Webhook request が信頼できる送信元から届いたことを確認するための秘密のランダム値です。多くの場合 HMAC 署名と組み合わせて使います。

この Webhook シークレットは安全に生成されますか?

はい。ブラウザの Web Crypto API を使って、暗号学的に安全な乱数バイトを生成します。

生成したシークレットはサーバーに送信されますか?

いいえ。このツールはブラウザ内でローカルに生成し、secret をサーバーへ送信しません。

どのくらいの長さを使えばよいですか?

本番では少なくとも 32 random bytes を使ってください。このツールの既定値は 48 bytes です。

Hex と Base64url のどちらを使うべきですか?

Hex は読みやすく環境変数に置きやすいです。Base64url は短くて URL にも使いやすいです。簡単さを優先して、このツールでは Hex を既定にしています。

Webhook シークレットを Git にコミットできますか?

いいえ。環境変数、デプロイ先の secrets、または secret manager に保存してください。

Webhook シークレットは API key と同じですか?

いいえ。API key は通常クライアントが API へアクセスするために使います。Webhook シークレットは通常、受信側が届いた webhook request の正当性を確認するために使います。

PR / Amazonアソシエイト

開発の理解を深める関連書籍

Amazonのアソシエイトとして、devloomは適格販売により収入を得ています。
価格・在庫は遷移先の Amazon 商品ページでご確認ください。

ツール一覧を見る

ツール一覧ページで、他の生成ツールを比較したり切り替えたりできます。

ツール一覧へ

安全性

ブラウザ内完結

生成と書き出しはブラウザ内で完結します。

送信なし

入力した値はサーバーへ送信されません。

保存なし

再読み込みすると入力と結果は消えます。