メニュー

Expand
ページを評価:

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 Kevin Whinnery Kat King Andrew Baker
                    ページを評価:

                    ヘルプが必要ですか?

                    We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd by visiting Twilio's Community Forums or browsing the Twilio tag on Stack Overflow.

                          
                          
                          

                          フィードバックくださりありがとうございます!

                          We are always striving to improve our documentation quality, and your feedback is valuable to us. Please select the reason(s) for your feedback or provide additional information about how we can improve:

                          Sending your feedback...
                          🎉 Thank you for your feedback!
                          Something went wrong. Please try again.

                          Thanks for your feedback!

                          Refer us and get $10 in 3 simple steps!

                          ステップ1

                          Get link

                          Get a free personal referral link here

                          ステップ2:

                          Give $10

                          Your user signs up and upgrade using link

                          ステップ3

                          Get $10

                          1,250 free SMSes
                          OR 1,000 free voice mins
                          OR 12,000 chats
                          OR more