ここではTwilioの開発者のエバンジェリストです。
あなたは絶対にvalidate that a webhook is a genuine Twilio requestです。
ウェブフック要求ごとに、Twilioは、X-Twilio-Signature
ヘッダーに署名を付けて送信します。署名は、以下の方法を使用して作成されます。
- Twilioは、最終的なURLと任意のPOSTフィールド(リクエストがPOSTである場合)を含め、アプリケーションにその要求を組み立てます。
- リクエストがPOSTの場合、TwilioはすべてのPOSTフィールドを取り、その名前でアルファベット順にソートし、パラメータ名と値をURLの最後(区切り文字なし)に連結します。
- Twilioは結果の文字列(クエリ文字列とPOSTパラメータを含む完全なURL)を取得し、HMAC-SHA1とAuthTokenをキーとして署名します。
署名を検証するために、以下を行う必要があります。
- あなたはプロトコル(HTTPSから、あなたの電話番号やアプリに指定する要求URLの完全なURLを取ります... )をクエリ文字列(?の後ろのすべて)の末尾に移動します。
- リクエストがPOSTの場合、すべてのPOSTパラメータをアルファベット順にソートします(Unixスタイルの大文字小文字を区別したソート順を使用)。
- POSTパラメータのソートされたリストを反復し、URLの末尾に変数名と値(区切り文字なし)を追加します。 文字列。
- AuthTokenをキーとしてHMAC-SHA1で結果の文字列に署名します(AuthTokenの場合は重要です)。
- 結果のハッシュ値をBase64でエンコードします。
- X-Twilio-Signatureヘッダーで送信されたハッシュと比較してください。彼らが合っていれば、あなたは良いことです。
これは、すべて私たちのSecurity pageに、例を挙げて、説明しています。 official helper librariesのいずれかを使用している場合、既に組み込まれていることを確認する方法があります。
WebHookが公開されているURLで、ハッシュされた秘密鍵を追加して値を検証できますか?例えば。 http:// your-api/webhooks/twilio?hash = abc123 – G0dsquad