

**推出 的新主控台體驗 AWS WAF**

您現在可以使用更新後的體驗，在主控台的任何位置存取 AWS WAF 功能。如需詳細資訊，請參閱[使用 主控台](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-console.html)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Regex 比對條件
<a name="classic-web-acl-regex-conditions"></a>

**警告**  
AWS WAF Classic 正在經歷規劃end-of-life程序。如需區域特定的里程碑和日期，請參閱您的 AWS Health 儀表板。

**注意**  
這是 **AWS WAF Classic** 文件。只有在您在 2019 年 11 月 AWS WAF 之前建立 AWS WAF 規則和 Web ACLs 等資源，且尚未將它們遷移到最新版本時，才應該使用此版本。若要遷移您的 Web ACLs，請參閱 [將您的 AWS WAF Classic 資源遷移至 AWS WAF](waf-migrating-from-classic.md)。  
**如需最新版本的 AWS WAF** ，請參閱 [AWS WAF](waf-chapter.md)。

如果您想根據請求裡出現符合規則運算式 (regex) 模式的字串，允許或封鎖 web 請求，請建立一個或多個 Regex 比對條件。regex 比對條件是一種字串比對條件，可識別您要搜尋的模式，以及您希望 AWS WAF Classic 檢查模式的 Web 請求部分，例如指定的標頭或查詢字串。稍後，當您建立 Web ACL，您需要指定是否要允許或封鎖含有這些模式的請求。

**Topics**
+ [建立 Regex 比對條件](#classic-web-acl-regex-conditions-creating)
+ [在您建立或編輯 RegEx 比對條件時所指定的值](#classic-web-acl-regex-conditions-values)
+ [編輯 Regex 比對條件](#classic-web-acl-regex-conditions-editing)

## 建立 Regex 比對條件
<a name="classic-web-acl-regex-conditions-creating"></a>

當您建立 Regex 比對條件，您需指定模式集以識別您想搜尋的字串 (使用規則運算式)。然後，將這些模式集新增至篩選條件，以指定您希望 AWS WAF Classic 檢查該模式集的 Web 請求部分，例如 URI 或查詢字串。

您可以將多個規則運算式增至單一模式集中。若您這麼做，這些運算式會與 *OR* 結合。如此，如果請求符合清單中的任一個運算式，web 請求將比對模式集。

當您將 regex 比對條件新增至規則時，您也可以設定 AWS WAF Classic 來允許或封鎖*不符合*條件中值的 Web 請求。

AWS WAF Classic 支援大多數[標準 Perl 相容規則表達式 (PCRE)](http://www.pcre.org/)。然而，目前不支援下列各項：
+ Backreferences 和擷取子運算式
+ 任意零寬度宣告
+ 子程式參考和遞迴模式
+ 條件式模式
+ 恢復控制動詞
+ \$1C 單一位元組指令
+ \$1R 換行比對指令
+ \$1K 開頭比對重設指令
+ 圖說文字和內嵌的程式碼
+ 原子分組和所佔有的量詞<a name="classic-web-acl-regex-conditions-creating-procedure"></a>

**建立 regex 比對條件**

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/wafv2/](https://console.aws.amazon.com/wafv2/) 開啟 AWS WAF 主控台。

   如果您在導覽窗格中看到**切換到 AWS WAF 傳統**，請選取它。

1. 在導覽窗格中選擇**字串和 regex 比對**。

1. 選擇 **Create condition (建立條件)**。

1. 指定適用的篩選條件設定。如需詳細資訊，請參閱[在您建立或編輯 RegEx 比對條件時所指定的值](#classic-web-acl-regex-conditions-values)。

1. 選擇**建立模式集和新增篩選條件** (如果您建立了新的模式集) 或**新增篩選條件**，如果您是使用現有的模式。

1. 選擇**建立**。

## 在您建立或編輯 RegEx 比對條件時所指定的值
<a name="classic-web-acl-regex-conditions-values"></a>

在建立或更新 Regex 比對條件時，請指定以下的值：

**名稱**  
輸入 Regex 比對條件的名稱。名稱僅能含有英數字元 (A-Z、a-z、0-9) 或以下特殊字元：\$1-\$1"\$1`\$1\$1\$1,./。條件的名稱在建立後無法變更。

**Type**  
選擇 **Regex match (Regex 比對)**。

**要篩選的請求部分是**  
選擇您希望 AWS WAF Classic 檢查您在**值**中指定的模式以符合的每個 Web 請求的部分：    
**標頭**  
指定的請求標頭，例如，`User-Agent` 或 `Referer` 標頭。如果您選擇**標頭**，請在**標頭**欄位裡指定標頭的名稱。  
**HTTP 方法**  
HTTP 方法，指出請求要求原始伺服器執行的操作類型。CloudFront 支援下列方法：`DELETE`、`GET`、`HEAD`、`OPTIONS`、`PATCH`、`POST` 和 `PUT`。  
**查詢字串**  
出現在 `?` 字元後的 URL 部分 (如果有)。  
**URI**  
請求的 URI 路徑，可識別資源，例如 `/images/daily-ad.jpg`。這不包含 URI 的查詢字串或片段元件。如需詳細資訊，請參閱[統一資源識別符 (URI)：一般語法](https://tools.ietf.org/html/rfc3986#section-3.3)。  
除非指定**轉換**，否則 URI 不會標準化，並如同在請求中從用戶端 AWS 接收 URI 一樣進行檢查。**Transformation (轉換)** 將如指定重新格式化 URI。  
**Body**  
部分的請求內容含有您想傳送至您的 web 伺服器做為 HTTP 請求內文的額外資料，您要傳送到您的 Web 伺服器的 HTTP 請求的內文，例如資料表單。  
如果您選擇**內文**做為**要篩選之請求部分**的值， AWS WAF Classic 只會檢查前 8192 個位元組 (8 KB)。若要允許或封鎖內文超過 8192 個位元組的請求，您可以建立大小限制條件。(AWS WAF Classic 會從請求標頭取得內文的長度。) 如需詳細資訊，請參閱[使用容量限制條件](classic-web-acl-size-conditions.md)。  
**單一查詢參數 (僅數值)**  
任何您已定義做為部分查詢字串的參數。例如，如果 URL 為「www.xyz.com?UserName=abc&SalesRegion=seattle」，則您可以新增篩選條件至 *UserName* 或 *SalesRegion* 參數。  
如果重複的參數顯示在查詢字串上，則數值評估則為「OR」。也就是說，將會觸發符合的值。例如，在 URL「www.xyz.com?SalesRegion=boston&SalesRegion=seattle」，符合在**符合值**裡「boston」或「seattle」的模式，將會觸發比對符合。  
如果您選擇**單一查詢參數 (僅數值)**，您也可以指定**查詢參數名稱**。這是您將在查詢字串參數中檢查的項目，例如 *UserName* 或 *SalesRegion*。**查詢參數名稱**的長度上限為 30 個字元。**查詢參數名稱** 不區分大小寫。例如，您指定 *UserName* 為**查詢參數名稱**，此會比對所有 *UserName* 的異體，如 *username* 和 *UsERName*。  
**所有的查詢參數 (僅數值)**  
與**單一查詢參數 （僅限值）** 類似，但不會檢查單一參數的值， AWS WAF Classic 會檢查查詢字串內所有參數的值，以取得**值**中指定的相符模式。例如，在 URL「"www.xyz.com?UserName=abc&SalesRegion=seattle」，在**符合值**裡的模式，符合 *UserName* 或 *SalesRegion*，將會觸發比對符合。

**標頭 (只有當「部分請求的篩選條件」為「標頭」時)**  
如果您從要**篩選清單的請求部分**中選擇**標頭**，請從常見標頭清單中選擇標頭，或輸入您要 AWS WAF Classic 檢查的標頭名稱。

**轉換**  
轉換會在 AWS WAF Classic 檢查請求之前重新格式化 Web 請求。這消除了攻擊者為了繞過 AWS WAF Classic 而在 Web 請求中使用的一些異常格式。  
您只能指定一種文字轉換類型。  
轉換可執行下列操作：    
**無**  
AWS WAF 在檢查 Web 請求中的**字串是否相符**之前，Classic 不會對 Web 請求執行任何文字轉換。  
**轉換成小寫**  
AWS WAF Classic 會將大寫字母 (A-Z) 轉換為小寫 (a-z)。  
**HTML 解碼**  
AWS WAF Classic 以未編碼的字元取代 HTML 編碼的字元：  
+ 將 `&quot;` 換成 `&`
+ 以非中斷空格取代 `&nbsp;`
+ 將 `&lt;` 換成 `<`
+ 將 `&gt;` 換成 `>`
+ 將表示為十六進位格式的字元 `&#xhhhh;` 以對應字元取代
+ 將表示為十進位格式的字元 `&#nnnn;` 以對應字元取代  
**標準化空格**  
AWS WAF Classic 以空格字元 （小數 32) 取代下列字元：  
+ \$1f、跳頁、小數 12
+ \$1t、標籤、小數 9
+ \$1n、換行，小數 10
+ \$1r、換行、小數 13
+ \$1v、垂直標籤，小數 11
+ 非中斷空格，小數 160
此外，此選項將數個空格取代為一個空格。  
**簡化命令列**  
若您將擔心攻擊者插入作業命令列命令，或使用不尋常的格式偽裝某些或所有命令，請使用此選項執行下列轉換：  
+ 刪除以下字元：\$1 " ' ^
+ 刪除以下字元前的空格：/ (
+ 將以下字元取代為空格：, ;
+ 將數個空格取代為一個空格
+ 將所有大寫字母 (A-Z) 轉換成小寫 (a-z)  
**URL 解碼**  
解碼 URL 編碼請求。

**比對請求的 Regex 模式**  
您可以選擇現有的模式集，或建立新的。如果您建立新的模式集指定以下：    
新模式集的名稱  
輸入名稱，然後指定您要 AWS WAF Classic 搜尋的 regex 模式。  
如果您新增多個規則運算式至模式集，這些運算式會與 *OR* 結合。如此，如果請求符合清單中的任一個運算式，web 請求將比對模式集。  
**符合值** 的長度上限為 70 個字元。

## 編輯 Regex 比對條件
<a name="classic-web-acl-regex-conditions-editing"></a>

您可以使用下列變更現有的 regex 比對條件：
+ 刪除現有模式集裡的模式
+ 新增模式至現有的模式集
+ 從現有的 Regex 比對條件刪除篩選條件
+ 將篩選條件新增至現有的 regex 比對條件 （在 regex 比對條件中只能有一個篩選條件。 因此，若要新增篩選條件，您必須先刪除現有的篩選條件。)
+ 刪除現有的 Regex 比對條件

**注意**  
您不能從現有篩選條件新增或刪除模式集。您必須編輯模式集、或刪除篩選條件並建立新的篩選條件與其新的模式集。<a name="classic-web-acl-regex-conditions-editing-procedure-delete-pattern"></a>

**刪除現有模式集裡的模式**

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/wafv2/](https://console.aws.amazon.com/wafv2/) 開啟 AWS WAF 主控台。

   如果您在導覽窗格中看到**切換到 AWS WAF 傳統**，請選取它。

1. 在導覽窗格中選擇**字串和 regex 比對**。

1. 選擇**檢視 Regex 模式集**。

1. 選擇您要編輯的模式集名稱。

1. 選擇**編輯**。

1. 在您要刪除的模式旁，選擇 **X**。

1. 選擇**儲存**。<a name="classic-web-acl-regex-conditions-editing-procedure-add-pattern"></a>

**新增模式至現有的模式集**

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/wafv2/](https://console.aws.amazon.com/wafv2/) 開啟 AWS WAF 主控台。

   如果您在導覽窗格中看到**切換到 AWS WAF 傳統**，請選取它。

1. 在導覽窗格中選擇**字串和 regex 比對**。

1. 選擇**檢視 Regex 模式集**。

1. 選擇要編輯的模式集名稱。

1. 選擇**編輯**。

1. 輸入新的 Regex 模式。

1. 選擇新的模式旁的 **\$1**。

1. 選擇**儲存**。<a name="classic-web-acl-regex-conditions-editing-procedure-delete-filter"></a>

**從現有的 Regex 比對條件刪除篩選條件**

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/wafv2/](https://console.aws.amazon.com/wafv2/) 開啟 AWS WAF 主控台。

   如果您在導覽窗格中看到**切換到 AWS WAF 傳統**，請選取它。

1. 在導覽窗格中選擇**字串和 regex 比對**。

1. 選擇您要刪除的篩選條件的比對條件名稱。

1. 選擇您要刪除篩選條件旁的方塊。

1. 選擇**刪除篩選條件**。<a name="classic-web-acl-regex-conditions-editing-procedure-delete-regex-condition"></a>

**刪除 Regex 比對條件**

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/wafv2/](https://console.aws.amazon.com/wafv2/) 開啟 AWS WAF 主控台。

   如果您在導覽窗格中看到**切換到 AWS WAF 傳統**，請選取它。

1. 從 Regex 比對條件刪除篩選條件。請參閱 [從現有的 Regex 比對條件刪除篩選條件](#classic-web-acl-regex-conditions-editing-procedure-delete-filter) 以取得執行此動作的指示。)

1. 從使用該 Regex 比對條件的規則中移除該條件：

   1. 在導覽窗格中，選擇**規則**。

   1. 選擇要刪除使用該 Regex 比對條件的規則名稱。

   1. 在右窗格中選擇**編輯規則**。

   1. 在您要刪除的條件旁，選擇 **X**。

   1. 選擇**更新**。

   1. 對所有剩下要刪除使用該 Regex 比對條件的規則，重複步驟。

1. 在導覽窗格中選擇**字串和 regex 比對**。

1. 選擇您要刪除條件旁的按鈕。

1. 選擇 **刪除**。<a name="classic-web-acl-regex-conditions-editing-procedure-add-filter"></a>

**從現有的 Regex 比對條件新增或變更篩選條件**

Regex 比對條件只能擁有一個篩選條件。如果您想新增或變更篩選條件，您必須先刪除現有的篩選條件。

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/wafv2/](https://console.aws.amazon.com/wafv2/) 開啟 AWS WAF 主控台。

   如果您在導覽窗格中看到**切換到 AWS WAF 傳統**，請選取它。

1. 從您想變更的 Regex 條件刪除篩選條件：請參閱 [從現有的 Regex 比對條件刪除篩選條件](#classic-web-acl-regex-conditions-editing-procedure-delete-filter) 以取得執行此動作的指示。)

1. 在導覽窗格中選擇**字串和 regex 比對**。

1. 選擇您要變更的條件名稱。

1. 選擇**新增篩選條件**。

1. 為新的篩選條件輸入適當的值，然後選擇**新增**。