CAPTCHA および Challenge アクション動作 - AWS WAF、AWS Firewall Manager、AWS Shield Advanced、および AWS Shield ネットワークセキュリティディレクター

AWS WAF の新しいコンソールエクスペリエンスのご紹介

更新されたエクスペリエンスを使用して、コンソールの任意の場所で AWS WAF 機能にアクセスできるようになりました。詳細については、「更新されたコンソールエクスペリエンスを使用する」を参照してください。

CAPTCHA および Challenge アクション動作

このセクションでは、CAPTCHA および Challenge アクションの役割について説明します。

ウェブリクエストが CAPTCHA または Challenge アクションのあるルールの検査基準に一致すると、AWS WAF はトークンの状態およびイミュニティ時間の設定に応じてリクエストの処理方法を決定します。AWS WAF は、リクエストが CAPTCHA パズルまたはチャレンジスクリプトのインタースティシャルを処理できるかどうかについても配慮します。スクリプトは HTML コンテンツとして処理されるように設計されており、HTML コンテンツを想定しているクライアントによってのみ適切に処理されることが可能です。

注記

CAPTCHA または Challenge ルールアクションを 1 つのルールで使用、あるいはルールグループでルールアクションのオーバーライドとして使用すると、追加料金が請求されます。詳細については、AWS WAF の料金を参照してください。

アクションがウェブリクエストを処理する方法

AWS WAF は、次のように CAPTCHA または Challenge アクションをウェブリクエストに適用します。

  • 有効なトークン – AWS WAF はこれを Count アクションと同様に処理します。AWS WAF はルールアクション用に設定したラベルおよびリクエストのカスタマイズを適用し、保護パック (ウェブ ACL) の残りのルールを使用してリクエストの評価を続行します。

  • トークンの不足、無効、有効期限切れ – AWS WAF はリクエストの保護パック (ウェブ ACL) 評価を中止し、意図した宛先への送信をブロックします。

    AWS WAF は、ルールのアクションタイプに従って、クライアントに送り返すレスポンスを生成します。

    • Challenge – AWS WAF はレスポンスに次のものが含まれます。

      • 値が challenge のヘッダー x-amzn-waf-action

        注記

        クライアントブラウザで実行されている Javascript アプリケーションの場合、このヘッダーはアプリケーションのドメイン内でのみ使用できます。ヘッダーは、クロスドメイン取得には使用できません。詳細については、次のセクションを参照してください。

      • HTTP ステータスコード 202 Request Accepted

      • 値が text/htmlAccept ヘッダーがリクエストに含まれている場合、応答にはチャレンジスクリプトを使用した JavaScript ページのインタースティシャルが含まれます。

    • CAPTCHA – AWS WAF はレスポンスに次のものが含まれます。

      • 値が captcha のヘッダー x-amzn-waf-action

        注記

        クライアントブラウザで実行されている Javascript アプリケーションの場合、このヘッダーはアプリケーションのドメイン内でのみ使用できます。ヘッダーは、クロスドメイン取得には使用できません。詳細については、次のセクションを参照してください。

      • HTTP ステータスコード 405 Method Not Allowed

      • text/html の値の Accept ヘッダーがリクエストに含まれている場合、応答には CAPTCHA スクリプトを使った JavaScript ページのインタースティシャルが含まれます。

保護パック (ウェブ ACL) またはルールレベルでトークンの有効期限が切れるタイミングを設定するには、「AWS WAF でのタイムスタンプの有効期限とトークンのイミュニティ時間の設定」を参照してください。

ヘッダーは、クライアントブラウザで実行される JavaScript アプリケーションでは使用できません

AWS WAF が CAPTCHA またはチャレンジ応答でクライアントリクエストに応答する場合、クロスオリジンリソース共有 (CORS) ヘッダーは含まれません。CORS ヘッダーは、JavaScript アプリケーションがどのドメイン、HTTP メソッド、および HTTP ヘッダーを使用できるかをクライアントウェブブラウザに指示する一連のアクセスコントロールヘッダーです。CORS ヘッダーがないと、クライアントブラウザで実行されている JavaScript アプリケーションには HTTP ヘッダーへのアクセスが許可されないため、CAPTCHA および Challenge 応答で提供される x-amzn-waf-action ヘッダーを読み取ることができません。

チャレンジと CAPTCHA インタースティシャルの機能

チャレンジインタースティシャルが実行されると、クライアントが応答に成功した後、まだトークンがない場合、インタースティシャルがトークンを初期化します。その後、チャレンジ解決のタイムスタンプでトークンを更新します。

CAPTCHA インタースティシャルを実行するとき、クライアントがまだトークンを持っていない場合、CAPTCHA インタースティシャルはまずチャレンジスクリプトを呼び出し、ブラウザにチャレンジしてトークンを初期化します。その後、インタースティシャルは CAPTCHA パズルを実行します。エンドユーザーがパズルの完成に成功すると、インタースティシャルはトークンを CAPTCHA 解決のタイムスタンプで更新します。

いずれの場合も、クライアントが応答に成功してスクリプトがトークンを更新した後、スクリプトは更新されたトークンを使用して元のウェブリクエストを再送信します。

AWS WAF がトークンを処理する方法を設定できます。詳細については、「AWS WAF インテリジェントな脅威の軽減におけるトークンの使用」を参照してください。