

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

更新されたエクスペリエンスを使用して、コンソールの任意の場所で AWS WAF 機能にアクセスできるようになりました。詳細については、[「コンソールの使用](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-console.html)」を参照してください。

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

# 正規表現一致条件の使用
<a name="classic-web-acl-regex-conditions"></a>

**警告**  
AWS WAF Classic は計画的なend-of-lifeプロセスを進めています。リージョン固有のマイルストーンと日付については、 AWS Health ダッシュボードを参照してください。

**注記**  
これは **AWS WAF Classic** ドキュメントです。このバージョンは、2019 年 11 月 AWS WAF より前にルールやウェブ ACLs などのリソースを作成し AWS WAF 、最新バージョンに移行していない場合にのみ使用してください。Web ACL を移行するには、[AWS WAF Classic リソースの への移行 AWS WAF](waf-migrating-from-classic.md) を参照してください。  
**の最新バージョンについては、 AWS WAF**「」を参照してください[AWS WAF](waf-chapter.md)。

リクエストに含まれる正規表現パターンと一致する文字列に基づいてウェブリクエストを許可またはブロックする場合は、1 つ以上の正規表現一致条件を作成します。正規表現一致条件は、検索するパターンと、指定されたヘッダーやクエリ文字列など、 AWS WAF Classic でパターンを検査するウェブリクエストの部分を識別する文字列一致条件の一種です。後でウェブ ACL を作成するときに、そのパターンを含むリクエストを許可するかブロックするかを指定します。

**Topics**
+ [正規表現一致条件の作成](#classic-web-acl-regex-conditions-creating)
+ [正規表現一致条件の作成時または編集時に指定する値](#classic-web-acl-regex-conditions-values)
+ [正規表現一致条件の編集](#classic-web-acl-regex-conditions-editing)

## 正規表現一致条件の作成
<a name="classic-web-acl-regex-conditions-creating"></a>

正規表現一致条件を作成するときは、検索する文字列 (正規表現を使用) を識別するパターンセットを指定します。次に、URI やクエリ文字列など、 AWS WAF Classic がそのパターンセットを検査するウェブリクエストの部分を指定するフィルターに、これらのパターンセットを追加します。

1 つのパターンセットに複数の正規表現を追加できます。その場合、それらの表現は *OR* を使用して結合します。つまり、リクエストの該当する部分が、指定した式のいずれかと一致する場合、ウェブリクエストはパターンセットと一致することになります。

正規表現一致条件をルールに追加すると、条件の値と*一致しない*ウェブリクエストを許可またはブロックするように AWS WAF Classic を設定することもできます。

AWS WAF Classic は、ほとんどの[標準の Perl 互換正規表現 (PCRE)](http://www.pcre.org/) をサポートしています。ただし、次はサポートしていません。
+ 後方参照と部分式取得
+ 任意のゼロ幅アサーション
+ サブルーチン参照と再帰パターン
+ 条件付きパターン
+ バックトラック制御動詞
+ \$1C シングルバイトディレクティブ
+ \$1R 改行一致ディレクティブ
+ \$1K 一致開始位置リセットディレクティブ
+ コールアウトと埋め込みコード
+ アトミックグループと所有格量指定子<a name="classic-web-acl-regex-conditions-creating-procedure"></a>

**正規表現一致条件を作成するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/wafv2/](https://console.aws.amazon.com/wafv2/) で AWS WAF コンソールを開きます。

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

1. ナビゲーションペインで、**[String and regex matching]** (文字列および正規表現の一致) を選択します。

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

1. 適用するフィルター設定を指定します。詳細については、「[正規表現一致条件の作成時または編集時に指定する値](#classic-web-acl-regex-conditions-values)」を参照してください。

1. **[Create pattern set and add filter]** (パターンセットを作成してフィルターを追加) を選択するか (新しいパターンセットを作成した場合)、**[Add filter]** (フィルターを追加) を選択します (既存のパターンセットを使用した場合)。

1. **[Create]** (作成) を選択します。

## 正規表現一致条件の作成時または編集時に指定する値
<a name="classic-web-acl-regex-conditions-values"></a>

正規表現一致条件を作成または更新するときに、次の値を指定します。

**[Name] (名前)**  
正規表現一致条件の名前を入力します。名前に使用できるのは英数字 (A～Z、a～z、0～9) または特殊文字 \$1-\$1"\$1`\$1\$1\$1,./ です。一度作成した条件の名前は変更できません。

**[Type] (タイプ)**  
**[Regex match]** (正規表現の一致) を選択します。

**[Part of the request to filter on] (フィルタリングするリクエストの一部) **  
 AWS WAF Classic が**一致する値**で指定したパターンを検査する各ウェブリクエストの部分を選択します。    
**ヘッダー**  
指定したリクエストヘッダー (`User-Agent` や `Referer` など)。**[Header]** (ヘッダー) を選択した場合は、**[Header]** (ヘッダー) フィールドにヘッダー名を指定します。  
**[HTTP method] (HTTP メソッド)**  
リクエストがオリジンに実行を要求しているオペレーションのタイプを示す HTTP メソッド。CloudFront がサポートしているメソッドは、`DELETE`、`GET`、`HEAD`、`OPTIONS`、`PATCH`、`POST`、および `PUT` です。  
**[Query string] (クエリ文字列)**  
URL 内で `?` 文字の後に続く部分 (ある場合)。  
**[URI]**  
リクエストの URI パス。リソースを識別します (例: `/images/daily-ad.jpg`)。これには、URI のクエリ文字列またはフラグメントコンポーネントは含まれません。詳細については、「[Uniform Resource Identifier (URI): 一般的な構文](https://tools.ietf.org/html/rfc3986#section-3.3)」を参照してください。  
**変換**が指定されていない限り、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 はリクエストヘッダーから本文の長さを取得します）。詳細については、「[サイズ制約条件の使用](classic-web-acl-size-conditions.md)」を参照してください。  
**[Single query parameter (value only)] (単一クエリパラメータ (値のみ))**  
クエリ文字列の一部として定義されているすべてのパラメータです。例えば、URL が「www.xyz.com?UserName=abc&SalesRegion=seattle」である場合、*UserName* または *SalesRegion* パラメータにフィルターを追加できます。  
重複したパラメータがクエリ文字列に記述される場合、値は「OR」として評価されます。つまり、いずれかの値によって一致がトリガーされます。例えば、「www.xyz.com?SalesRegion=boston&SalesRegion=seattle」という URL では、**[Value to match]** (一致する値) の「boston」または「seattle」に一致するパターンによって、一致がトリガーされます。  
**[Single query parameter (value only)]** (単一クエリパラメータ (値のみ)) を選択する場合は、**[Query parameter name]** (クエリパラメータ名) も指定します。これは検査するクエリ文字列のパラメータです (*UserName* や *SalesRegion* など)。**[Query parameter name]** (クエリパラメータ名) の最大長は 30 文字です。**[Query parameter name]** (クエリパラメータ名) では、大文字と小文字は区別されません。例えば、*UserName* を **[Query parameter name]** (クエリパラメータ名) として指定すると、*username* や *UsERName* など *UserName* のすべてのバリエーションに一致します。  
**[All query parameters (values only)] (すべてのクエリパラメータ (値のみ))**  
**単一クエリパラメータ (値のみ)** に似ていますが、単一パラメータの値を検査するのではなく、 AWS WAF Classic はクエリ文字列内のすべてのパラメータの値を、**一致する値**で指定されたパターンで検査します。例えば、「www.xyz.com?UserName=abc&SalesRegion=seattle」という URL の *UserName* または *SalesRegion* のいずれかの値に一致する **[Value to match]** (一致する値) のパターンによって、一致がトリガーされます。

**[Header] (ヘッダー) ([Part of the request to filter on] (フィルタリングするリクエストの一部) が [Header] (ヘッダー) の場合のみ)**  
リストから**フィルタリングするリクエストのパート**から**ヘッダー**を選択した場合は、一般的なヘッダーのリストからヘッダーを選択するか、 AWS WAF Classic で検査するヘッダーの名前を入力します。

**変換**  
Classic がリクエストを AWS WAF 検査する前に、変換によってウェブリクエストが再フォーマットされます。これにより、攻撃者が AWS WAF Classic をバイパスするためにウェブリクエストで使用する異常なフォーマットの一部が排除されます。  
1 種類のテキスト変換しか指定できません。  
変換では次の操作を実行できます。    
**なし**  
AWS WAF Classic は、値の文字列が**一致する**かどうかを検査する前に、ウェブリクエストに対してテキスト変換を実行しません。  
**[Convert to lowercase] (小文字に変換)**  
AWS WAF Classic は、大文字 (A～Z) を小文字 (a～z) に変換します。  
**[HTML decode] (HTML デコード)**  
AWS WAF Classic は、HTML エンコード文字をエンコードされていない文字に置き換えます。  
+ `&quot;` を `&` に置き換えます。
+ `&nbsp;` を改行なしスペースに置き換えます。
+ `&lt;` を `<` に置き換えます。
+ `&gt;` を `>` に置き換えます。
+ 16 進数形式の文字 (`&#xhhhh;`) を対応する文字に置き換えます。
+ 10 進数形式の文字 (`&#nnnn;`) を対応する文字に置き換えます。  
**[Normalize white space] (空白の正規化)**  
AWS WAF Classic は、次の文字をスペース文字 (10 進数 32) に置き換えます。  
+ \$1f、フォームフィード、10 進数 12
+ \$1t、タブ、10 進数 9
+ \$1n、改行、10 進数 10
+ \$1r、キャリッジリターン、10 進数 13
+ \$1v、垂直タブ、10 進数 11
+ 改行なしスペース、10 進数 160
さらに、このオプションでは複数のスペースを 1 つのスペースに置き換えます。  
**[Simplify command line] (コマンドラインを簡素化)**  
攻撃者がオペレーティングシステムのコマンドラインのコマンドを挿入し、通常と異なるフォーマットを使用してコマンドの一部または全部を偽装するおそれがある場合は、このオプションを使用して次の変換を行います。  
+ 次の文字を削除します: \$1 " ' ^
+ 次の文字の前にあるスペースを削除します: / (
+ 次の文字をスペースに置き換えます: , ;
+ 複数のスペースを 1 つのスペースに置き換えます。
+ 大文字 (A〜Z) を小文字 (a〜z) に変換します。  
**[URL decode] (URL デコード)**  
URL エンコードされたリクエストをデコードします。

**[Regex pattern to match to request] (リクエストに一致する正規表現パターン)**  
既存のパターンセットを選択するか、新しいパターンセットを作成できます。新しいパターンセットを作成する場合は、次のように指定します。    
New pattern set name (新しいパターンセット名)  
名前を入力し、 AWS WAF Classic で検索する正規表現パターンを指定します。  
パターンセットに複数の正規表現を追加すると、それらの表現は *OR* を使用して結合されます。つまり、リクエストの該当する部分が、指定した式のいずれかと一致する場合、ウェブリクエストはパターンセットと一致することになります。  
**[Value to match]** (一致する値) は最大 70 文字です。

## 正規表現一致条件の編集
<a name="classic-web-acl-regex-conditions-editing"></a>

既存の正規表現一致条件に次の変更を加えることができます。
+ 既存のパターンセットからパターンを削除する
+ 既存のパターンセットにパターンを追加する
+ 既存正規表現一致条件からフィルターを削除する
+ 既存の正規表現一致条件にフィルターを追加する (正規表現一致条件には 1 つのフィルターのみを含めることができます。したがって、フィルターを追加するには、まず既存のフィルターを削除する必要があります。)
+ 既存の正規表現一致条件を削除する

**注記**  
既存のフィルターに対してパターンセットを追加したり削除したりはできません。パターンセットを編集するか、または、フィルターを削除して新しいパターンセットで新しいフィルターを作成する必要があります。<a name="classic-web-acl-regex-conditions-editing-procedure-delete-pattern"></a>

**既存のパターンセットからパターンを削除するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/wafv2/](https://console.aws.amazon.com/wafv2/) で AWS WAF コンソールを開きます。

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

1. ナビゲーションペインで、**[String and regex matching]** (文字列および正規表現の一致) を選択します。

1. **[View regex pattern sets]** (正規表現パターンセットを表示) を選択します。

1. 編集するパターンセットの名前を選択します。

1. **[Edit]** (編集) を選択します。

1. 削除するパターンの横にある **[X]** を選択します。

1. **[Save]** (保存) を選択します。<a name="classic-web-acl-regex-conditions-editing-procedure-add-pattern"></a>

**既存のパターンセットにパターンを追加するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/wafv2/](https://console.aws.amazon.com/wafv2/) で AWS WAF コンソールを開きます。

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

1. ナビゲーションペインで、**[String and regex matching]** (文字列および正規表現の一致) を選択します。

1. **[View regex pattern sets]** (正規表現パターンセットを表示) を選択します。

1. 編集するパターンセットの名前を選択します。

1. **[Edit]** (編集) を選択します。

1. 新しい正規表現パターンを入力します。

1. 新しいパターンの横にある **[\$1]** を選択します。

1. **[Save]** (保存) を選択します。<a name="classic-web-acl-regex-conditions-editing-procedure-delete-filter"></a>

**既存の正規表現一致条件からフィルターを削除するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/wafv2/](https://console.aws.amazon.com/wafv2/) で AWS WAF コンソールを開きます。

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

1. ナビゲーションペインで、**[String and regex matching]** (文字列および正規表現の一致) を選択します。

1. 削除するフィルターを含む条件の名前を選択します。

1. 削除するフィルターの横にあるボックスを選択します。

1. **[Delete filter]** (フィルターを削除) を選択します。<a name="classic-web-acl-regex-conditions-editing-procedure-delete-regex-condition"></a>

**正規表現一致条件を削除するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/wafv2/](https://console.aws.amazon.com/wafv2/) で AWS WAF コンソールを開きます。

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

1. 正規表現条件からフィルターを削除します。その手順については、「[既存の正規表現一致条件からフィルターを削除するには](#classic-web-acl-regex-conditions-editing-procedure-delete-filter)」を参照してください。

1. 正規表現一致条件を使用しているルールから条件自体を削除します。

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

   1. 削除する正規表現一致条件を使用しているルールの名前を選択します。

   1. 右側のペインで、**[Edit rule]** (ルールを編集) を選択します。

   1. 削除する条件の横にある **[X]** を選択します。

   1. **[Update]** (更新) を選択します。

   1. 削除する正規表現一致条件を使用している残りのすべてのルールに対してこの同じ手順を繰り返します。

1. ナビゲーションペインで、**[String and regex matching]** (文字列および正規表現の一致) を選択します。

1. 削除する条件の横にあるボタンを選択します。

1. **[Delete]** (削除) を選択します。<a name="classic-web-acl-regex-conditions-editing-procedure-add-filter"></a>

**既存の正規表現一致条件に対してフィルターを追加または変更するには**

正規表現一致条件には 1 つのフィルターのみ含めることができます。フィルターを追加または変更するには、まず既存のフィルターを削除する必要があります。

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/wafv2/](https://console.aws.amazon.com/wafv2/) で AWS WAF コンソールを開きます。

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

1. 変更する正規表現条件からフィルターを削除します。その手順については、「[既存の正規表現一致条件からフィルターを削除するには](#classic-web-acl-regex-conditions-editing-procedure-delete-filter)」を参照してください。

1. ナビゲーションペインで、**[String and regex matching]** (文字列および正規表現の一致) を選択します。

1. 変更する条件の名前を選択します。

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

1. 新しいフィルターに適切な値を入力し、**[Add]** (追加) を選択します。