

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

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

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

# 使用字串比對條件
<a name="classic-web-acl-string-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)。

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

**Topics**
+ [建立字串比對條件](#classic-web-acl-string-conditions-creating)
+ [在您建立或編輯字串比對條件時所指定的值](#classic-web-acl-string-conditions-values)
+ [新增和刪除字串比對條件的篩選條件](#classic-web-acl-string-conditions-editing)
+ [刪除字串比對條件](#classic-web-acl-string-conditions-deleting)

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

當您建立字串比對條件時，您可以指定篩選條件，以識別您要搜尋的字串，以及您希望 AWS WAF Classic 檢查該字串的 Web 請求部分，例如 URI 或查詢字串。您可以將多個篩選條件增至字串比對條件，或您可以為每個篩選條件建立獨立的條件。以下是每個組態如何影響 AWS WAF Classic 行為的方式：
+ **每個字串比對條件一個篩選條件** – 當您將個別字串比對條件新增至規則並將規則新增至 Web ACL 時，Web 請求必須符合 AWS WAF Classic 的所有條件，才能根據條件允許或封鎖請求。

  例如，假設您建立兩個條件。一個符合 web 請求，還有 `User-Agent` 標頭的 `BadBot` 值。另一個符合 web 請求，含有查詢字串的 `BadParameter` 值。當您將兩個條件新增至相同的規則並將規則新增至 Web ACL 時， AWS WAF Classic 只會允許或封鎖同時包含兩個值的請求。
+ **每個字串比對條件有多個篩選條件** – 當您將包含多個篩選條件的字串比對條件新增至規則並將規則新增至 Web ACL 時，Web 請求只需要比對 AWS WAF Classic 字串比對條件中的其中一個篩選條件，以根據一個條件允許或封鎖請求。

  假設您建立一個條件，而不是兩個條件，而一個條件包含與上述範例中相同的兩個篩選條件。如果請求包含在 `User-Agent` 標頭或`BadParameter`查詢字串**`BadBot`中， AWS WAF Classic 允許*或*封鎖請求。

**注意**  
當您將字串比對條件新增至規則時，您也可以設定 AWS WAF Classic 來允許或封鎖*不符合*條件中值的 Web 請求。<a name="classic-web-acl-string-conditions-creating-procedure"></a>

**建立字串比對條件**

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. 指定適用的篩選條件設定。如需詳細資訊，請參閱[在您建立或編輯字串比對條件時所指定的值](#classic-web-acl-string-conditions-values)。

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

1. 如果您希望新增另一個篩選，重複步驟四和五。

1. 完成篩選條件，請選擇**建立**。

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

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

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

**Type**  
選擇 **String match (字串比對)**。

**要篩選的請求部分是**  
選擇您希望 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 檢查的標頭名稱。

**符合類型**  
在您希望 AWS WAF Classic 檢查的請求部分中，選擇**值中要比對**的字串必須顯示為符合此篩選條件的位置：    
**Contains**  
該字串出現在指定請求部分中的任何位置。  
**包含的字**  
指定的請求部分必須包含**符合值**，且**符合值**必須只能含有字母數字字元或底線 (A-Z, a-z, 0-9, or \$1)。此外，**符合值**必須為字，表示以下其中一項：  
+ **符合值**完全符合指定的值，例如 web 請求部分的標頭的值。
+ **符合值**為指定的 Web 請求部分的開始，後面接的字元為一個字母數字字元或底線 (\$1)，例如 `BadBot;`。
+ **符合值**為指定的 Web 請求部分的結尾，前面接的字元為一個字母數字字元或底線 (\$1)，例如`;BadBot`。
+ **符合值**為指定的 Web 請求部分的中間，前後面接的字元為字母數字字元或底線 (\$1)，例如`-BadBot;`。  
**完全符合**  
字串和指定的請求部分，值為相同的。  
**開頭為**  
該字串出現在指定請求部分中的起始位置。  
**Ends with**  
該字串出現在指定請求部分中的結束位置。

**轉換**  
轉換會在 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 編碼請求。

**base64 編碼值**  
如果**符合值**的值是 base64 編碼，請選取此核取方塊。使用 base64 編碼指定攻擊者在其請求中使用的無法列印字元，例如標籤和換行。

**符合值**  
指定您希望 AWS WAF Classic 在 Web 請求中搜尋的值。長度上限為 50 個位元組。如果您使用 base64 編碼此數值，50 個位元組的長度上限適用於之前編碼的值。

## 新增和刪除字串比對條件的篩選條件
<a name="classic-web-acl-string-conditions-editing"></a>

您可以新增和刪除字串比對條件的篩選條件。若要變更篩選條件、新增新的篩選條件、和刪除舊的篩選條件。<a name="classic-web-acl-string-conditions-editing-procedure"></a>

**新增和刪除字串比對條件的篩選條件**

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

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

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

1. 選擇您想要在條件裡新增或刪除的篩選條件。

1. 若要新增篩選條件，請執行以下步驟：

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

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

   1. 選擇**新增**。

1. 若要刪除篩選條件，請執行以下步驟：

   1. 選取您要刪除的篩選條件。

   1. 選擇**刪除篩選條件**。

## 刪除字串比對條件
<a name="classic-web-acl-string-conditions-deleting"></a>

如果您想要刪除字串條件，您需要先刪除該條件內的所有篩選條件，以及從所有使用它的規則中移除，請參閱下列程序。<a name="classic-web-acl-string-conditions-deleting-procedure"></a>

**刪除字串比對條件**

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

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

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

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

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

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

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

   1. 選擇**更新**。

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

1. 從您想刪除的條件移除篩選條件：

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

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

   1. 在右窗格中，選擇**篩選條件**旁的核取方塊，以選取所有篩選條件。

   1. 選擇**刪除篩選條件**。

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

1. 在**字串比對條件**窗格中，選擇您要刪除的字串比對條件。

1. 選擇**刪除**以刪除選取的條件。