文字列一致ルールステートメント - AWS WAF、AWS Firewall Manager、および AWS Shield Advanced

文字列一致ルールステートメント

このセクションでは、文字列一致ステートメントとは何か、またその仕組みについて説明します。

文字列一致ステートメントは、AWS WAF がリクエストで検索する文字列、検索するリクエストの場所、および検索する方法を指示します。例えば、リクエストに含まれるクエリ文字列の先頭にある特定の文字列、またはリクエストの User-agent ヘッダーと完全に一致する特定の文字列を検索できます。通常、文字列は印刷可能な ASCII 文字で構成されますが、16 進数 0x00 〜 0xFF (10 進数 0 〜 255) の任意の文字を使用できます。

ルールステートメントの特性

ネスト可能 - このステートメントタイプはネスト可能です。

WCU – 基本コストは、使用する一致のタイプによって異なります。

  • 次の文字列に完全一致 - 2

  • 文字列で始まる - 2

  • 文字列で終わる - 2

  • 文字列を含む - 10

  • 単語を含む – 10

[All query parameters] (すべてのクエリパラメータ) のリクエストコンポーネントを使用する場合、10 WCU を追加します。[JSON body] (JSON 本文) のリクエストコンポーネントを使用する場合、基本コストの WCU を倍増させます。適用する各テキスト変換について、10 WCU を追加します。

このステートメントタイプは、ウェブリクエストコンポーネントで動作し、次のリクエストコンポーネント設定が必要です。

  • [リクエストコンポーネント] — ウェブリクエストの検査対象部分 (クエリ文字列や本文など)。

    警告

    リクエストコンポーネント [Body] (本文)、[JSON body] (JSON 本文)、[Headers] (ヘッダー)、または [Cookies] (cookie) を検査する場合、AWS WAF で検査できるコンテンツの量の制限を「AWS WAF でのオーバーサイズウェブリクエストコンポーネントの処理」で確認してください。

    ウェブリクエストコンポーネントの詳細については、「AWS WAF でのルールステートメント設定の調整」を参照してください。

  • [Optional text transformations] (オプションのテキスト変換) – リクエストコンポーネントを検査する前に AWS WAF が実行する変換。例えば、小文字に変換したり、空白を正規化したりできます。複数の変換を指定すると、AWS WAF は、リストされている順に処理します。詳細については、「AWS WAF でのテキスト変換の使用」を参照してください。

さらに、このステートメントには、次の設定が必要です。

  • String to match (照合する文字列) - これは、AWS WAF が指定されたリクエストコンポーネントと比較する文字列です。通常、文字列は印刷可能な ASCII 文字で構成されますが、16 進数 0x00 〜 0xFF (10 進数 0 〜 255) の任意の文字を使用できます。

  • String match condition (文字列の一致条件) - AWS WAF が実行する検索タイプを示します。

    • Exactly matches string (次の文字列に完全一致) - リクエストコンポーネントの文字列と値が同一です。

    • Starts with string (次の文字列で始まる) - この文字列は、リクエストコンポーネントの先頭に出現します。

    • Ends with string (次の文字列で終わる) - この文字列は、リクエストコンポーネントの末尾に出現します。

    • Contains string (次の文字列を含む) - この文字列は、リクエストコンポーネント内の任意の場所に出現します。

    • Contains word (次の文字列を含む) - 指定した文字列がリクエストコンポーネントに出現する必要があります。

      このオプションの場合、指定する文字列には英数字またはアンダースコア (A〜Z、a〜z、0〜9、または_) のみを使用できます。

      リクエストが一致するには、次のいずれかに当てはまる必要があります。

      • 文字列が、ヘッダーの値など、リクエストコンポーネントの値と正確に一致する。

      • 文字列が、リクエストコンポーネントの先頭にあり、英数字または下線 (_) 以外の文字が続く (例: BadBot;)。

      • 文字列が、リクエストコンポーネントの末尾にあり、英数字または下線 (_) 以外の文字が先行する (例: ;BadBot)。

      • 文字列が、リクエストコンポーネントの中央にあり、英数字または下線 (_) 以外の文字が前後にある (例: -BadBot;)。

このルールステートメントの場所

  • コンソールのルールビルダー - [Match type] (一致タイプ) で [String match condition] (文字列一致条件) を選択し、一致させる文字列を入力します。

  • API – 「ByteMatchStatement