クロスサイトスクリプティング一致条件の使用 - AWS WAF、 AWS Firewall Manager、および AWS Shield Advanced

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

クロスサイトスクリプティング一致条件の使用

警告

AWS WAF クラシックサポートは 2025 年 9 月 30 日に終了します。

注記

これは AWS WAF Classic ドキュメントです。このバージョンは、2019 年 11 月ACLs AWS WAF 以前にルールやウェブ などのリソースを作成し AWS WAF 、まだ最新バージョンに移行していない場合にのみ使用してください。ウェブ を移行するにはACLs、「」を参照してくださいAWS WAF Classic リソースの への移行 AWS WAF

の最新バージョンについては AWS WAF、「」を参照してくださいAWS WAF

攻撃者は、ウェブアプリケーションの脆弱性を悪用するために、ウェブリクエスト内にスクリプトを挿入する場合があります。1 つ以上のクロスサイトスクリプティング一致条件を作成して、 AWS WAF Classic が悪意のあるスクリプトの可能性を検査する URIやクエリ文字列などのウェブリクエストの部分を特定できます。プロセスの後半で、ウェブ を作成するときにACL、悪意のあるスクリプトが含まれているように見えるリクエストを許可するかブロックするかを指定します。

クロスサイトスクリプティング一致条件の作成

クロスサイトスクリプティング一致条件を作成する場合は、フィルターを指定します。フィルターは、 AWS WAF Classic が URIやクエリ文字列などの悪意のあるスクリプトを検査するウェブリクエストの一部を示します。クロスサイトスクリプティング一致条件には複数のフィルターを追加できます。条件ごとに 1 つのフィルターを設定することもできます。各設定が AWS WAF Classic の動作にどのように影響するかを次に示します。

  • クロスサイトスクリプティング一致条件 (推奨) ごとに複数のフィルター – ルールに複数のフィルターを含むクロスサイトスクリプティング一致条件を追加し、ウェブ にルールを追加する場合ACL、ウェブリクエストは AWS WAF 、その条件に基づいてリクエストを許可またはブロックするために Classic のクロスサイトスクリプティング一致条件のフィルターの 1 つにのみ一致する必要があります。

    例えば、1 つのクロスサイトスクリプティング一致条件を作成し、その条件に 2 つのフィルターを含めたとします。1 つのフィルターは AWS WAF Classic に悪意のあるスクリプトURIがないか検査するように指示し、もう 1 つのフィルターは AWS WAF Classic にクエリ文字列の検査を指示します。 AWS WAF Classic は、 またはクエリ文字列に悪意のあるスクリプトが含まれているように見えるリクエストを許可URIまたはブロックします。

  • クロスサイトスクリプティング一致条件ごとに 1 つのフィルター — ルールに個別のクロスサイトスクリプティング一致条件を追加し、ウェブ にルールを追加する場合ACL、ウェブリクエストは、条件に基づいてリクエストを許可またはブロックする AWS WAF Classic のすべての条件と一致する必要があります。

    2 つの条件を作成し、各条件に前の例で示した 2 つのフィルターの 1 つを別個に含めたとします。同じルールに両方の条件を追加し、ウェブ にルールを追加するとACL、 AWS WAF Classic は、 URIとクエリ文字列の両方に悪意のあるスクリプトが含まれているように見える場合にのみリクエストを許可またはブロックします。

注記

クロスサイトスクリプティング一致条件をルールに追加すると、悪意のあるスクリプトが含まれていないように見えるウェブリクエストを許可またはブロックするように AWS WAF Classic を設定することもできます。

クロスサイトスクリプティング一致条件を作成するには
  1. にサインイン AWS Management Console し、 で AWS WAF コンソールを開きますhttps://console.aws.amazon.com/wafv2/

    ナビゲーションペインに AWS WAF Classic に切り替えるが表示された場合は、それを選択します。

  2. ナビゲーションペインで、[Cross-site scripting] (クロスサイトスクリプティング) を選択します。

  3. [Create condition] (条件を作成) を選択します。

  4. 適用するフィルター設定を指定します。詳細については、「クロスサイトスクリプティング一致条件の作成時または編集時に指定する値」を参照してください。

  5. [Add another filter] (別のフィルターを追加) を選択します。

  6. 別のフィルターを追加する場合は、ステップ 4〜5 を繰り返します。

  7. フィルターの追加が完了したら、[Create] (作成) を選択します。

クロスサイトスクリプティング一致条件の作成時または編集時に指定する値

クロスサイトスクリプティング一致条件を作成または更新するときに、次の値を指定します。

[Name] (名前)

クロスサイトスクリプティング一致条件の名前。

名前に使用できるのは A~Z、a~z、0~9 の英数字と特殊文字 _-!"#`+*},./ です。一度作成した条件の名前は変更できません。

[Part of the request to filter on] (フィルタリングするリクエストの一部)

AWS WAF Classic が悪意のあるスクリプトを検査する各ウェブリクエストの部分を選択します。

[Header] (ヘッダー)

指定したリクエストヘッダー (User-AgentReferer など)。[Header] (ヘッダー) を選択した場合は、[Header] (ヘッダー) フィールドにヘッダー名を指定します。

HTTP メソッド

リクエストがオリジンに実行をリクエストするオペレーションのタイプを示す HTTP メソッド。CloudFront では、DELETE、、GETHEADOPTIONSPATCHPOST、 の各メソッドがサポートされていますPUT

クエリ文字列

ある場合は、?文字の後にURL表示される の一部。

注記

クロスサイトスクリプティングの一致条件については、[Part of the request to filter on] (フィルタリングするリクエストの一部) に [Query string] (クエリ文字列) ではなく、[All query parameters (values only)] (すべてのクエリパラメータ (値のみ)) を選択することをお勧めします。

URI

リクエストのURIパス。 など、リソースを識別します/images/daily-ad.jpg。これには、 のクエリ文字列やフラグメントコンポーネントは含まれませんURI。詳細については、「Uniform Resource Identifier (URI): Generic Syntax」を参照してください。

トランスフォーメーションが指定されていない限り、 URIは正規化されず、リクエストの一部としてクライアントから AWS 受け取ったのと同じように検査されます。トランスフォーメーションは、指定されたURIとおりに を再フォーマットします。

[Body] (本文)

フォームからのデータなど、リクエスト本文としてウェブサーバーに送信する追加データを含むHTTPリクエストの一部。

注記

[Part of the request to filter on] (フィルタリングするリクエストの一部) の値として [Body] (本文) を選択した場合、 AWS WAF Classic によって最初の 8,192 バイト (8 KB) のみが検査されます。本文が 8,192 バイトより長いリクエストを許可またはブロックするには、サイズ制約条件を作成します。(AWS WAF Classic はリクエストヘッダーから本文の長さを取得します)。詳細については、「サイズ制約条件の使用」を参照してください。

[Single query parameter (value only)] (単一クエリパラメータ (値のみ))

クエリ文字列の一部として定義されているすべてのパラメータです。例えば、 URLがwww.xyz.com?UserName=abc&SalesRegion=seattle」の場合、 UserName または SalesRegionパラメータにフィルターを追加できます。

[Single query parameter (value only)] (単一クエリパラメータ (値のみ)) を選択する場合は、[Query parameter name] (クエリパラメータ名) も指定します。これは、 UserNameや など、検査するクエリ文字列のパラメータですSalesRegion[Query parameter name] (クエリパラメータ名) の最大長は 30 文字です。[Query parameter name] (クエリパラメータ名) では、大文字と小文字は区別されません。例えば、クエリパラメータ名 UserName として を指定すると、ユーザー名UsERName などUserName、 のすべてのバリエーションと一致します。

[All query parameters (values only)] (すべてのクエリパラメータ (値のみ))

単一クエリパラメータ (値のみ) と同様ですが、単一パラメータの値を調べるのではなく、 AWS WAF Classic はクエリ文字列内のすべてのパラメータ値を検査して、悪意のあるスクリプトがないかを確認します。例えば、 URLがwww.xyz.com?UserName=abc&SalesRegion=seattle,」で、すべてのクエリパラメータ (値のみ) を選択した場合、 AWS WAF Classic は の値または悪意のあるスクリプトUserNameSalesRegionが含まれている可能性がある場合にマッチをトリガーします。

[Header] (ヘッダー)

でフィルタリングするリクエストの一部ヘッダーを選択した場合は、一般的なヘッダーのリストからヘッダーを選択するか、 AWS WAF Classic で悪意のあるスクリプトを検査するヘッダーの名前を入力します。

[Transformation] (変換)

Classic がリクエストを AWS WAF 検査する前に、変換によってウェブリクエストが再フォーマットされます。これにより、攻撃者が AWS WAF Classic をバイパスするためにウェブリクエストで使用する異常なフォーマットの一部が排除されます。

1 種類のテキスト変換しか指定できません。

変換では次の操作を実行できます。

なし

AWS WAF Classic は、値 の文字列が と一致するかどうかを検査する前に、ウェブリクエストに対してテキスト変換を実行しません。

[Convert to lowercase] (小文字に変換)

AWS WAF Classic は、大文字 (A~Z) を小文字 (a~z) に変換します。

HTML デコード

AWS WAF Classic はHTML、エンコードされた文字をエンコードされていない文字に置き換えます。

  • "& に置き換えます。

  •   を改行なしスペースに置き換えます。

  • &lt;< に置き換えます。

  • &gt;> に置き換えます。

  • 16 進数形式の文字 (&#xhhhh;) を対応する文字に置き換えます。

  • 10 進数形式の文字 (&#nnnn;) を対応する文字に置き換えます。

[Normalize white space] (空白の正規化)

AWS WAF Classic は、次の文字をスペース文字 (10 進数 32) に置き換えます。

  • \f、フォームフィード、10 進数 12

  • \t、タブ、10 進数 9

  • \n、改行、10 進数 10

  • \r、キャリッジリターン、10 進数 13

  • \v、垂直タブ、10 進数 11

  • 改行なしスペース、10 進数 160

さらに、このオプションでは複数のスペースを 1 つのスペースに置き換えます。

[Simplify command line] (コマンドラインを簡素化)

オペレーティングシステムのコマンドラインのコマンドが含まれているリクエストの場合、このオプションを使用して次の変換を行います。

  • 次の文字を削除します: \ " ' ^

  • 次の文字の前にあるスペースを削除します: / (

  • 次の文字をスペースに置き換えます: , ;

  • 複数のスペースを 1 つのスペースに置き換えます。

  • 大文字 (A〜Z) を小文字 (a〜z) に変換します。

URL デコード

URLエンコードされたリクエストをデコードします。

クロスサイトスクリプティング一致条件のフィルターの追加と削除

クロスサイトスクリプティング一致条件のフィルターを追加または削除できます。フィルターを変更するには、新しいフィルターを追加して古いフィルターを削除します。

クロスサイトスクリプティング一致条件のフィルターを追加または削除するには
  1. にサインイン AWS Management Console し、 で AWS WAF コンソールを開きますhttps://console.aws.amazon.com/wafv2/

    ナビゲーションペインに AWS WAF Classic に切り替えるが表示された場合は、それを選択します。

  2. ナビゲーションペインで、[Cross-site scripting] (クロスサイトスクリプティング) を選択します。

  3. フィルターを追加または削除する対象の条件を選択します。

  4. フィルターを追加するには、次のステップを実行します。

    1. [Add filter] (フィルターを追加) を選択します。

    2. 適用するフィルター設定を指定します。詳細については、「クロスサイトスクリプティング一致条件の作成時または編集時に指定する値」を参照してください。

    3. [Add] (追加) を選択します。

  5. フィルターを削除するには、次のステップを実行します。

    1. 削除するフィルターを選択します。

    2. [Delete filter] (フィルターを削除) を選択します。

クロスサイトスクリプティング一致条件の削除

クロスサイトスクリプティング一致条件を削除するには、最初にその条件からすべてのフィルターを削除し、その条件を使用しているすべてのルールから条件自体を削除します。次に手順を示します。

クロスサイトスクリプティング一致条件を削除するには
  1. にサインイン AWS Management Console し、 で AWS WAF コンソールを開きますhttps://console.aws.amazon.com/wafv2/

    ナビゲーションペインに AWS WAF Classic に切り替えるが表示された場合は、それを選択します。

  2. ナビゲーションペインで、[Cross-site scripting] (クロスサイトスクリプティング) を選択します。

  3. [Cross-site scripting match conditions] (クロスサイトスクリプティング一致条件) ペインで、削除するクロスサイトスクリプティング一致条件を選択します。

  4. 右ペインで、[Associated rules] (関連付けられたルール) タブを選択します。

    このクロスサイトスクリプティング一致条件を使用しているルールのリストが空の場合は、ステップ 6 に進みます。リストにルールが含まれている場合は、ルールを書き留めて、ステップ 5 に進みます。

  5. クロスサイトスクリプティング一致条件を使用しているルールから、この条件を削除するには、次のステップを実行します。

    1. ナビゲーションペインで [Rules] (ルール) を選択します。

    2. 削除するクロスサイトスクリプティング一致条件を使用しているルールの名前を選択します。

    3. 右ペインで、ルールから削除するクロスサイトスクリプティング一致条件を選択し、[Remove selected condition] (選択した条件を削除) を選択します。

    4. 削除するクロスサイトスクリプティング一致条件を使用しているすべての残りのルールに対してステップ b とステップ c を繰り返します。

    5. ナビゲーションペインで、[Cross-site scripting] (クロスサイトスクリプティング) を選択します。

    6. [Cross-site scripting match conditions] (クロスサイトスクリプティング一致条件) ペインで、削除するクロスサイトスクリプティング一致条件を選択します。

  6. [Delete] (削除) を選択して、選択した条件を削除します。