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

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

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

注記

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

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

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

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

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

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

    例えば、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 にサインインし、https://console.aws.amazon.com/wafv2/ AWS WAF のコンソールを開きます。

    ナビゲーションペインに [ AWS WAF クラシックに切り替え] が表示されている場合は、それを選択します。

  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 method] (HTTP メソッド)

リクエストがオリジンに実行を要求しているオペレーションのタイプを示す HTTP メソッド。CloudFront DELETE、、、、、GETHEADOPTIONSPATCHPOSTPUTおよびの各メソッドをサポートします。

[Query string] (クエリ文字列)

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): 一般的な構文」を参照してください。

Transformation が指定されていない限り、URI は正規化されず、 AWS リクエストの一部としてクライアントから受け取った時点で検査されます。[Transformation] (変換) が指定されている場合、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」の場合、またはパラメータにフィルタを追加できます。UserNameSalesRegion

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

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

単一クエリパラメーター (値のみ) と似ていますが、 AWS WAF Classic は 1 つのパラメーターの値を検査するのではなく、クエリ文字列内のすべてのパラメーター値を検査して、悪意のあるスクリプトがないかを調べます。たとえば、URL が「www.xyz.com? UserName =abc& SalesRegion =theatle」で、「すべてのクエリパラメーター (値のみ)」を選択した場合、 AWS WAF Classic は、その値に悪意のあるスクリプトが含まれているか、その値に悪意のあるスクリプトが含まれていると、一致をトリガーします。UserNameSalesRegion

[Header] (ヘッダー)

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

[Transformation] (変換)

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

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

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

なし

AWS WAF Classic は、Value の文字列が一致するかどうかを調べるまで、ウェブリクエストのテキスト変換を一切行いません。

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

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

[HTML decode] (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 decode] (URL デコード)

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

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

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

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

    ナビゲーションペインに [ AWS WAF クラシックに切り替え] が表示されている場合は、それを選択します。

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

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

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

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

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

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

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

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

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

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

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

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

    ナビゲーションペインに [ AWS WAF クラシックに切り替え] が表示されている場合は、それを選択します。

  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] (削除) を選択して、選択した条件を削除します。