メニュー

Expand
Rate this page:

Thanks for rating this page!

We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

Twilioの着信リクエストを検証してPHP / Lumenアプリケーションを安全にする

In this guide we’ll cover how to secure your Lumen application by validating incoming requests to your Twilio webhooks are, in fact, from Twilio.

With a few lines of code we’ll write a custom middleware for our Lumen app that uses the Twilio PHP SDK’s RequestValidator utility. We can then use that middleware on our Lumen routes which accept Twilio webhooks to confirm that incoming requests genuinely originated from Twilio.

Let’s get started!

Create custom middleware

Twilio PHP SDKには受信リクエストに使用できる RequestValidator ユーティリティーが含まれています。

各Lumenルートにリクエスト検証コードを含めることができますが、これはLumenミドルウェアを記述する絶好の機会です。 こうすれば、Twilioからの受信リクエストを受け付ける全ルートで検証ロジックを再利用できます。

To validate an incoming request genuinely originated from Twilio, we need to call the $requestValidator->validate(...). That method will return true if the request is valid or false if it isn’t. Our middleware then either continues processing the view or returns a 403 HTTP response for unauthorized requests.

        
        
        
        
        Twilio SDKの 'RequestValidator' を使用してWebhookリクエストを検証する

        Lumenミドルウェアを作成してリクエストを検証する

        Twilio SDKの 'RequestValidator' を使用してWebhookリクエストを検証する

        Webhookにリクエスト検証ミドルウェアを適用する

        カスタムのTwilioリクエスト検証ミドルウェアを、Twilio のWebhookで使用される全Lumenルートに適用します。

        ルートでミドルウェアを使用するには、まずミドルウェアをRegister Middlewareセクションのbootstrap/app.phpに追加することが必要です。

        $app->routeMiddleware([
          'TwilioRequestValidator' => App\Http\Middleware\TwilioRequestValidator::class,
        ]);
        

        続いて、下記のようにミドルウェアを各ルートに追加することが必要です。

              
              
              
              
              Creates a route for /voice and /message to handle the respective webhooks.

              Lumenルートを作成し、Twilioリクエストを処理する

              Creates a route for /voice and /message to handle the respective webhooks.

              実際に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

              Lumenルート用にテストを記述した場合、Twilioリクエスト検証ミドルウェアを使用するルートでテストに失敗する可能性があります。 これらルートに送信するテストスイートのいかなるリクエストも、ミドルウェアの検証チェックに失敗します。

              To fix this problem we recommend adding an extra check in your middleware, like shown here, telling it to only reject incoming requests if your app is running in production.

                    
                    
                    
                    
                    Use `APP_ENV` environment variable to disable request validation.

                    Disable Twilio request validation when testing

                    Use `APP_ENV` environment variable to disable request validation.

                    次は?

                    開発者のTwilio Webhookへのリクエストの検証はTwilioアプリケーションをセキュアにするのには素晴らしい第一歩です。 アプリケーションの保護についてのさらなるアドバイスについては、セキュリティードキュメントの全部、特に対詐欺行為対策開発者ガイドをお読みいただくことをお勧めします。

                    PHPの開発環境のセットアップについて詳しく学ぶ。

                    Lumenアプリケーションをセキュアにする方法について学ぶには、一般的にはLumen公式ドキュメントのセキュリティ考慮事項についてのページをご覧ください。

                    Jose Oliveros Agustin Camino Andrew Baker Kevin Whinnery Kat King
                    Rate this page:

                    ヘルプが必要ですか?

                    誰しもが一度は考える「コーディングって難しい」。そんな時は、お問い合わせフォームから質問してください。 または、Stack Overflow でTwilioタグのついた情報から欲しいものを探してみましょう。