文字列一致ルールステートメント
このセクションでは、文字列一致ステートメントとは何か、またその仕組みについて説明します。
文字列一致ステートメントは、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」