メニュー

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の着信リクエストを検証してSinatraアプリケーションを安全にする

このガイドでは、開発者のTwilio Webhookへの受信リクエストが本当にTwilioからのものか検証することで、Sinatraアプリケーションをセキュアにする方法を取り上げます。

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

Let’s get started!

開始ポイント

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

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

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

$ ruby index.rb

このシンプルなアプリケーションは任意の「/」へのリクエストに対して、検証を一切行わずにTwiMLを返します:

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

      Twilioリクエスト検証を行わないSinatraアプリケーション

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

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

      Sinatraアプリケーションにリクエスト検証を追加するには認証トークンが必要です。

      Twilio Consoleから取得できるTwilio API用の認証トークンが必要になります。 このトークンは新しい環境変数にエクスポートすることで設定されます:

      $ export TWILIO_AUTH_TOKEN=" TWILIO_AUTH_TOKEN_HERE "
      

      Rackミドルウェアを通じてリクエスト検証を使用するには、下記の行を追加することが必要です:

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

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

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

          概要とテスト

          この時点でサンプルは発展し、認証トークンを使用することでTwilioリクエストにに対するセキュアな認証が確保されました。

          前項のcurlの手順を繰り返すことで、認証が機能していることをテストできます:

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

          カスタム検証ロジックで、Sinatraアプリケーションへの受信リクエストが本物かどうか確認します。 もしリクエストが有効な場合は<?xml version="1.0" encoding="UTF-8"?> <Response><Message>Hello World</Message></Response>を、そうでない場合はTwilio Request Validation Failed.を返します。 このロジックではリクエストの処理を継続するか、無効なリクエストの試行に対しては403 HTTPレスポンスを返します。

          テスト中の検証

          あなたのSinatraアプリケーション用にテストを記述する場合、Twilioのリクエスト検証を使用するルートに対しては失敗する可能性があります。 この問題を修正するには、テストでライブラリーを模倣することを推奨します。 リクエストの模倣レスポンスの模倣については公式のRackドキュメントを参照してください。

          次は?

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

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

          Juan Carlos Ojeda Agustin Camino Andrew Baker Paul Kamp  Kat King Kevin Whinnery

          ヘルプが必要ですか?

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

          Loading Code Sample...