Webhookに発信元を証明する文字列を追加しました

Webhookに、セキュリティの向上を目的として、HTTPヘッダ内に発信元を証明する文字列を追加しました。

WebhookはWebPay上で発生したイベントを通知する仕組みで、WebPayのサーバから登録されたURLにHTTPリクエストを送信してイベントを通知します。 しかし、このURLはインターネットからアクセスできる状態になっている必要があるため、WebPay以外の第三者がリクエストを送信する場合もありえます。 悪意のある第三者が、リクエストの内容を通常のWebhookの内容に似せ、Webhook受信処理の実装上の弱点をついて攻撃することが想定されます。

これまで、WebPayではこの脅威に対する簡単で効果的な解決策を提供できていませんでした。 今回追加した発信元証明を利用すると、数行のコードで効果的にWebPayからのリクエストであることを識別できます。

詳細な利用方法はWebhookドキュメントX-Webpay-Origin-Credentialをご覧ください。 Rubyでの実装例も掲載しています。

発信元証明は簡単に利用できるセキュリティ対策ですが、証明文字列が漏洩した場合には、とたんに無力になります。 Webhookの内容をもとに課金を起こすなど、重要な処理を行う場合には、APIを経由してWebhookの内容を検証することを推奨します。 Webhookで送信されるのはイベントのデータであるため、受信したデータに含まれるイベントのIDを用いてイベント詳細の取得ができるAPIエンドポイントから同一の内容を確認できます。 APIレスポンスはWebhookのデータより改竄の危険性が著しく低いので、このAPIレスポンスにもとづいて処理することで、よりセキュアな実装となります。

今回の変更は利用者の方からのご要望により実現しました。貴重なご意見をいただいたことに感謝いたします。