メニュー

Expand
ページを評価:

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

In this guide we will cover how to secure your Sinatra application by validating that incoming requests to your Twilio webhooks are, in fact, from Twilio.

数行のコードでTwilio Ruby SDKの検証ユーティリティーを使用するSinatraアプリケーション用のカスタム検証を記述します。 そうすればこのバリデーターをTwilioのWebhookを受け入れるSinatraアプリケーション上で使用し、受信リクエストが確かにTwilioが発信源となっているか確認します。

Let’s get started!

A starting point

Ruby用の開発環境のセットアップについてヘルプが必要な場合は、セットアップドキュメントをご確認ください。

Sinatraアプリケーションを実装している基本的なコードサンプルから構築をはじめます。

次のようにサンプルコードを実行する:

$ ruby index.rb

This application returns TwiML to any request to "/" without any validation whatsoever:

$ curl -XPOST http://localhost:4567
<?xml version="1.0" encoding="UTF-8"?> <Response><Message>Hello World</Message></Response>
        
        
        
        TwiMLに応答するシンプルなSinatraアプリケーション

        A Sinatra app without Twilio request validation

        TwiMLに応答するシンプルなSinatraアプリケーション

        リクエスト検証を追加する

        To add request validation to your Sinatra App, you'll need an Authentication Token.

        We will need an Authentication Token for the Twilio API from the Twilio Console, and this token will be set by exporting a new environment variable:

        $ export TWILIO_AUTH_TOKEN=" TWILIO_AUTH_TOKEN_HERE "
        

        To enable request validation through the Rack middleware, we have to add the following line:

        use Rack::TwilioWebhookAuthentication, ENV['TWILIO_AUTH_TOKEN'], '/'
        
              
              
              
              この検証コードで、Sinatraアプリケーションへの受信リクエストが本物かどうか確認します。

              Twilioリクエストを検証るすrSinatraアプリケーション用のTwilio Webhookミドルウェア

              この検証コードで、Sinatraアプリケーションへの受信リクエストが本物かどうか確認します。

              概要とテスト

              At this point the example has grown and has enabled secure authentication of Twilio requests using your Authentication Token.

              We can test that request validation is working by repeating the previous curl step:

              $ curl -XPOST http://localhost:4567
              Twilio Request Validation Failed.
              

              Confirm that incoming requests to your Sinatra application are genuine with this custom validation logic. It will return <?xml version="1.0" encoding="UTF-8"?> <Response><Message>Hello World</Message></Response> if the request is valid, or Twilio Request Validation Failed. if it is not. Our logic then either continues processing the request or returns error 403 HTTP response for invalid requests attempt.

              テスト中の検証

              If you write tests for your Sinatra application, those tests may fail for routes where you use Twilio request validation. To fix this problem we recommend to use a mocking library in your tests. Take a look at the official Rack documentation for mocking requests and mocking responses.

              次は?

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

              一般的なSinatraアプリケーションのセキュリティーを向上させる方法の詳細については、公式Sinatraドキュメント内のセキュリティー検討事項のページを参照するか、公式RackドキュメントTwilio Ruby SDKをご覧いただけます。

              Juan Carlos Ojeda Kevin Whinnery Kat King Andrew Baker Paul Kamp Shawn Stern
              ページを評価:

              ヘルプが必要ですか?

              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 Stack Overflow Collective or browsing the Twilio tag on Stack Overflow.

                    
                    
                    

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

                    Please select the reason(s) for your feedback. The additional information you provide helps us improve our documentation:

                    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