お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の
英語版を参照してください。
プロジェクト、タスク、課題の Webhook を HMAC-SHA 256(SHA 256 を使用したハッシュベースメッセージ認証コード)で保護できます。Zoho プロジェクトでは、Webhook の真正性と完全性を確保・維持するための業界標準のハッシュ方式である HMAC-SHA 256 を使用して Webhook を保護することができます。
HMAC では次の点を確認できます:
- Webhook リクエストが Zoho プロジェクトから送信されたものかどうか(シークレットキーは Zoho プロジェクトと受信アプリケーションのみが知っている必要があります)。
- Webhook の内容が送信途中で改ざんされていないかどうか。
Webhook を保護する理由
Webhook は、あるアプリケーションから別のアプリケーションにリアルタイムデータを提供するための HTTP リクエストです。セキュリティ攻撃では、攻撃者が不正な Webhook を送信して正規のプロバイダーになりすまし、機密データを取得することが容易にできます。そのため、アプリが信頼できる送信元からの正規の処理のみを受信し、偽のリクエストや悪意のあるリクエストにだまされないよう、Webhook を保護する必要があります。
メリット:
- レポートへの誤ったデータの反映を防止
- 不正な更新を防止
- セキュリティ侵害を防止
Webhook セキュリティを有効にする
ユーザーは、Webhook の追加時または編集時に Webhook セキュリティ設定を有効にできます。
- [設定]>[自動化 / Issue Tracker]>[Webhook]に移動します。
- 新規 Webhook の場合は、Webhook フォームに詳細を入力し、[セキュリティ設定]をオンに切り替えます。既存の Webhook の場合は、セキュリティを有効にする Webhook を選択します。
- HMAC キーを入力します。[生成]をクリックして HMAC キーを生成することもできます。
- [保存]をクリックします。
HMAC キーの長さは 16~128 文字である必要があります。
Zoho プロジェクトでの Webhook セキュリティの仕組み
Zoho プロジェクトから Webhook が送信されると、X-ZP-Webhook-署名 という名前の HMAC 署名がリクエストヘッダーに含まれます。Webhook リクエストを受信したアプリケーションは、同じシークレットキーを使用して HMAC 署名を生成し、リクエストヘッダーに含まれる値と比較します。値が一致する場合はデータは正当であり、一致しない場合はデータが改ざんされています。
HMAC 署名の生成
Zoho プロジェクトは、HMAC-SHA256 アルゴリズムを使用して Webhook データの内容の署名を計算し、その結果を base64 形式でリクエストヘッダーに送信します。以下はサンプルデータを用いた説明です。
|
データの内容
|
{{'requests':{'request_name':'テスト 名前'},'通知': {'operation_type':'RequestSigningSuccess'}}
|
|
secret_key
|
thisisthesamplekeyfortestingpurposes
|
|
base64encode(HMAC SHA-256(データの内容+secret_key))
|
drbSrM4H816RYKpZiRBLddUa0yHaTrwjtY04sIZFZus=
|
Webhook リクエストヘッダー(HMAC ヘッダー)がどのように表示されるかのイメージは次のとおりです。
受信アプリケーションでの HMAC 署名の検証
- JSON 形式で読み込む際にキーの順序が変わらないよう、データの内容は文字列として読み取る必要があります。
- シークレットキーを使用してデータの内容の HMAC SHA-256 ハッシュを計算し、その結果を base64 エンコードします。
- 手順 2 で取得した値と、受信した HMAC ヘッダー(X-ZP-Webhook-署名)の値を比較します。一致しない場合は、その Webhook リクエストを却下します。
HMAC 署名を認証するための Java コードスニペットのサンプル: