Twilioの着信リクエストを検証してExpressアプリケーションを安全にする
このガイドでは、開発者のTwilio Webhookへの受信リクエストが本当にTwilioからのものか検証することで、Expressアプリケーションをセキュアにする方法を取り上げます。
Twilio Node SDKを使用してExpressアプリケーションをセキュアにする方法はシンプルです。 Twilio SDKにはすぐに使えるExpressミドルウェアがついてきます。
Let’s get started!
Twilio Expressリクエスト検証ミドルウェア
Twilio Node SDKには受信リクエストを検証するExpressミドルウェアとして使用できる webhook()
メソッドが含まれています。 Expressのルートに適用されると、リクエストが認証されない場合にはミドルウェアは403 HTTPレスポンスを返します。
実際にTwilioのWebhookを使用できるよう、ローカルの開発環境にトンネルを使用する
If your Twilio webhook URLs start with https://
instead of http://
, your request validator may fail locally when you use ngrok or in production if your stack terminates SSL connections upstream from your app. This is because the request URL that your Express application sees does not match the URL Twilio used to reach your application.
ngrok
でローカル開発向けにこれを修正するには、ngrok https 3000
ではなくngrok http 3000
を使用し、Webhookへのリクエストを受け入れます。
Disable request validation during testing
Expressルート用にテストを記述した場合、Twilioリクエスト検証ミドルウェアを使用するルートでテストに失敗する可能性があります。 これらルートに送信するテストスイートのいかなるリクエストも、ミドルウェアの検証チェックに失敗します。
この問題を修正するには、 {validate: false}
を検証ミドルウェア twilio.webhook()
に渡して無効化します。 Expressアプリケーションでは、NODE_ENV
をアプリケーションが実行中の環境を決定する値として使用するのは一般的なことです。 コード例では、NODE_ENV
が 'test'
のとき、検証ミドルウェアが無効化されます。
次は?
Validating requests to your Twilio webhooks is a great first step for securing your Twilio application. We recommend reading over our full security documentation for more advice on protecting your app, and the Anti-Fraud Developer’s Guide in particular.
To learn more about securing your Express application in general, check out the security considerations page in the official Express docs.
ヘルプが必要ですか?
誰しもが一度は考える「コーディングって難しい」。そんな時は、お問い合わせフォームから質問してください。 または、Stack Overflow でTwilioタグのついた情報から欲しいものを探してみましょう。