

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

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

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

# AWS WAF 規則
<a name="waf-rules"></a>

本節說明什麼是 AWS WAF 規則及其運作方式。

 AWS WAF 規則定義如何檢查 HTTP(S) Web 請求，以及在符合檢查條件時對請求採取的動作。您只能在規則群組或保護套件 (Web ACL) 的內容中定義規則。

規則本身不存在於 中 AWS WAF 。它們不是 AWS 資源，也沒有 Amazon Resource Name (ARNs)。您可以在定義規則群組或保護套件 (Web ACL) 中依名稱存取規則。您可以使用規則群組的 JSON 檢視或包含規則的保護套件 (Web ACLs)，來管理規則並將其複製到其他保護套件 (Web ACL)。您也可以透過 AWS WAF 主控台規則建置器進行管理，該建置器可用於保護套件 (Web ACLs) 和規則群組。

**規則名稱**  
每個規則都需要一個名稱。避免開頭為 的名稱，`AWS`以及用於其他 服務為您管理的規則群組或規則的名稱。請參閱 [辨識其他服務提供的規則群組](waf-service-owned-rule-groups.md)。

**注意**  
如果您變更規則的名稱，並且希望規則的指標名稱反映變更，則也必須更新指標名稱。 AWS WAF 當您變更規則名稱時， 不會自動更新規則的指標名稱。您可以使用規則 JSON 編輯器，在主控台中編輯規則時變更指標名稱。您也可以透過 APIs 和用於定義保護套件 (Web ACL) 或規則群組的任何 JSON 清單中變更這兩個名稱。

**規則陳述式**  
每個規則還需要規則陳述式，以定義規則如何檢查 Web 請求。根據規則和陳述式類型，規則陳述式可能包含任何深度的其他巢狀陳述式。有些規則陳述式採用一組條件。例如，您可以為 IP 集比對規則指定最多 10，000 個 IP 地址或 IP 地址範圍。

您可以定義規則來檢查條件，如下所示：
+ 指令碼可能為惡意。攻擊者可以利用 web 應用程式的漏洞內嵌指令碼。這稱為跨網站指令碼 (XSS)。
+ 發出請求的 IP 地址或地址範圍。
+ 發出請求的國家/地區或地理位置。
+ 請求指定部分的長度，例如查詢字串。
+ SQL 程式碼可能為惡意。攻擊者會藉由內嵌惡意 SQL 程式碼於 web 請求中，嘗試從您的資料庫碼擷取資料。此稱為 SQL Injection。
+ 字串會出現在請求，例如出現在 `User-Agent` 標頭的值或出現在查詢字串的文字字串。您也可以使用規則運算式 (regex) 指定這些字串。
+ 保護套件 (Web ACL) 中先前規則已新增至請求的標籤。

除了具有 Web 請求檢查條件的陳述式之外，與上述清單中的陳述式一樣， AWS WAF 還支援 `AND`、 `OR`和 的邏輯陳述式`NOT`，您可以將陳述式結合在規則中。

例如，根據您最近從攻擊者看到的請求，您可以使用結合下列巢狀陳述式的邏輯`AND`陳述式來建立規則：
+ 來自 192.0.2.44 的請求。
+ 在 `User-Agent` 標頭中包含 `BadBot` 值。
+ 它們好像有包含類似 SQL 程式碼的查詢字串。

在此情況下，Web 請求需要符合所有陳述式，才能符合最上層 `AND`。

**Topics**
+ [在 中使用規則動作 AWS WAF](waf-rule-action.md)
+ [在 中使用規則陳述式 AWS WAF](waf-rule-statements.md)
+ [在 中使用相符規則陳述式 AWS WAF](waf-rule-statements-match.md)
+ [在 中使用邏輯規則陳述式 AWS WAF](waf-rule-statements-logical.md)
+ [在 中使用以速率為基礎的規則陳述式 AWS WAF](waf-rule-statement-type-rate-based.md)
+ [在 中使用規則群組規則陳述式 AWS WAF](waf-rule-statements-rule-group.md)

# 在 中使用規則動作 AWS WAF
<a name="waf-rule-action"></a>

本節說明規則動作的運作方式。

當 Web 請求符合規則中定義的條件時，規則動作會告知 AWS WAF 該如何處理。您可以選擇性地將自訂行為新增至每個規則動作。

**注意**  
規則動作可以是終止或非終止。終止動作會停止請求的保護套件 (Web ACL) 評估，並讓它繼續到您的受保護應用程式或封鎖它。

以下是規則動作選項：
+ **Allow** – AWS WAF 允許將請求轉送至受保護 AWS 的資源以進行處理和回應。這是終止動作。在您定義的規則中，您可以將自訂標頭插入請求，然後再轉送到受保護的資源。
+ **Block** – AWS WAF 封鎖請求。這是終止動作。根據預設，受保護 AWS 的資源會以 HTTP `403 (Forbidden)` 狀態碼回應。在您定義的規則中，您可以自訂回應。當 AWS WAF 封鎖請求時，Block動作設定會決定受保護資源傳回用戶端的回應。
+ **Count** – AWS WAF 計算請求，但不決定允許或封鎖請求。這是非終止動作。 會 AWS WAF 繼續處理保護套件 (Web ACL) 中的其餘規則。在您定義的規則中，您可以將自訂標頭插入請求，也可以新增其他規則可比對的標籤。
+ **CAPTCHA 和 Challenge** – AWS WAF 使用 CAPTCHA 拼圖和靜音挑戰來驗證請求不是來自機器人，並使用 AWS WAF 字符來追蹤最近成功的用戶端回應。

  CAPTCHA 拼圖和無提示挑戰只能在瀏覽器存取 HTTPS 端點時執行。瀏覽器用戶端必須在安全的內容中執行，才能取得字符。
**注意**  
當您在其中一個規則中使用 CAPTCHA或 Challenge規則動作，或做為規則群組中的規則動作覆寫時，需支付額外費用。如需詳細資訊，請參閱[AWS WAF 定價](https://aws.amazon.com/waf/pricing/)。

  這些規則動作可以終止或非終止，取決於請求中的字符狀態：
  + **未終止有效、未過期的字符** – 如果字符根據設定的 CAPTCHA 或挑戰抗擾性時間有效且未過期， 會 AWS WAF 處理類似於 Count動作的請求。 會根據保護套件 (Web ACL) 中的其餘規則 AWS WAF 繼續檢查 Web 請求。與Count組態類似，在您定義的規則中，您可以選擇使用自訂標頭來設定這些動作，以插入請求中，也可以新增其他規則可比對的標籤。
  + **以無效或過期權杖的封鎖請求終止** – 如果權杖無效或指定的時間戳記已過期， 會 AWS WAF 終止 Web 請求的檢查並封鎖請求，類似於 Block動作。 AWS WAF 然後以自訂回應碼回應用戶端。對於 CAPTCHA，如果請求內容指出用戶端瀏覽器可以處理它， AWS WAF 會在 JavaScript 間質中傳送 CAPTCHA 拼圖，以區分人類用戶端和機器人。對於 Challenge動作， AWS WAF 會傳送具有無提示挑戰的 JavaScript 間質，此挑戰旨在區分正常瀏覽器與機器人正在執行的工作階段。

  如需其他資訊，請參閱 [CAPTCHA 和 Challenge 中的 AWS WAF](waf-captcha-and-challenge.md)。

如需自訂請求和回應的詳細資訊，請參閱 [中的自訂 Web 請求和回應 AWS WAF](waf-custom-request-response.md)。

如需將標籤新增至相符請求的詳細資訊，請參閱 [中的 Web 請求標籤 AWS WAF](waf-labels.md)。

如需有關保護套件 (Web ACL) 和規則設定如何互動的資訊，請參閱 [在 中使用保護套件 (Web ACLs) 搭配規則和規則群組 AWS WAF](web-acl-processing.md)。

# 在 中使用規則陳述式 AWS WAF
<a name="waf-rule-statements"></a>

本節說明規則陳述式的運作方式。

規則陳述式是規則的一部分， AWS WAF 說明如何檢查 Web 請求。當 AWS WAF 在 Web 請求中找到檢查條件時，我們說 Web 請求符合 陳述式。視陳述式類型而定，每個規則陳述式會指定要尋找什麼以及如何尋找。

中的每個規則 AWS WAF 都有單一最上層規則陳述式，可包含其他陳述式。規則陳述式可以非常簡單。例如，您可以有一個陳述式，提供一組原始國家/地區來檢查 的 Web 請求，或者您可以在僅參考規則群組的保護套件 (Web ACL) 中擁有規則陳述式。規則陳述式也可以非常複雜。例如，您可以有一個結合許多其他陳述式與邏輯 AND、 OR和 NOT陳述式的陳述式。

對於大多數規則，您可以將自訂 AWS WAF 標籤新增至相符的請求。 AWS 受管規則規則群組中的規則會將標籤新增至相符的請求。規則新增的標籤會將請求的相關資訊提供給稍後在保護套件 (Web ACL) 和 AWS WAF 日誌和指標中評估的規則。如需標籤的相關資訊，請參閱 [中的 Web 請求標籤 AWS WAF](waf-labels.md)和 [標籤比對規則陳述式](waf-rule-statement-type-label-match.md)。

**巢狀規則陳述式**  
AWS WAF 支援許多規則陳述式的巢狀化，但不支援所有規則陳述式。例如，您無法在另一個陳述式內巢狀化規則群組陳述式。您需要在某些案例中使用巢狀，例如縮小範圍陳述式和邏輯陳述式。以下規則陳述式列出和規則詳細資訊，說明每個類別和規則的巢狀功能和需求。

主控台中規則的視覺化編輯器僅支援規則陳述式的一個巢狀層級。例如，您可以在邏輯AND或OR規則內巢狀化許多類型的陳述式，但您無法巢狀化另一個 AND或 OR規則，因為這需要第二層級的巢狀化。若要實作多個巢狀層級，請透過主控台中的 JSON 規則編輯器或透過 APIs 提供 JSON 中的規則定義。

**Topics**
+ [在 中調整規則陳述式設定 AWS WAF](waf-rule-statement-fields.md)
+ [在 中使用縮小範圍陳述式 AWS WAF](waf-rule-scope-down-statements.md)
+ [在 中參考可重複使用的實體 AWS WAF](waf-rule-statement-reusable-entities.md)

# 在 中調整規則陳述式設定 AWS WAF
<a name="waf-rule-statement-fields"></a>

本節說明您可以在檢查 Web 請求元件的規則陳述式中指定的設定。如需用量的相關資訊，請參閱 中的個別規則陳述式[在 中使用相符規則陳述式 AWS WAF](waf-rule-statements-match.md)。

這些 Web 請求元件的子集也可以用在以速率為基礎的規則中，做為自訂請求彙總金鑰。如需相關資訊，請參閱[在 中彙總以速率為基礎的規則 AWS WAF](waf-rule-statement-type-rate-based-aggregation-options.md)。

對於請求元件設定，您可以指定元件類型本身，以及任何其他選項，具體取決於元件類型。例如，當您檢查包含文字的元件類型時，您可以在檢查之前對其套用文字轉換。

**注意**  
除非另有說明，否則如果 Web 請求沒有規則陳述式中指定的請求元件， 會將請求 AWS WAF 評估為不符合規則條件。

**Contents**
+ [在 中請求元件 AWS WAF](waf-rule-statement-fields-list.md)
  + [HTTP 方法](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-http-method)
  + [單一標頭](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-single-header)
  + [所有標頭](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-headers)
  + [標頭順序](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-header-order)
  + [Cookie](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-cookies)
  + [URI 片段](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-uri-fragment)
  + [URI 路徑](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-uri-path)
  + [JA3 指紋](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-ja3-fingerprint)
  + [JA4 指紋](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-ja4-fingerprint)
  + [查詢字串](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-query-string)
  + [單一查詢參數](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-single-query-param)
  + [所有查詢參數](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-all-query-params)
  + [Body](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-body)
  + [JSON 內文](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-json-body)
+ [在 中使用轉送的 IP 地址 AWS WAF](waf-rule-statement-forwarded-ip-address.md)
+ [在 中檢查 HTTP/2 虛擬標頭 AWS WAF](waf-rule-statement-request-components-for-http2-pseudo-headers.md)
+ [在 中使用文字轉換 AWS WAF](waf-rule-statement-transformation.md)

# 在 中請求元件 AWS WAF
<a name="waf-rule-statement-fields-list"></a>

本節說明您可以指定用於檢查的 Web 請求元件。您可以為尋找 Web 請求內模式的比對規則陳述式指定請求元件。這些類型的陳述式包括字串比對、regex 比對、大小限制和 SQL Injection 攻擊陳述式。如需如何使用這些請求元件設定的詳細資訊，請參閱 中的個別規則陳述式 [在 中使用相符規則陳述式 AWS WAF](waf-rule-statements-match.md)

除非另有說明，否則如果 Web 請求沒有規則陳述式中指定的請求元件， 會將請求 AWS WAF 評估為不符合規則條件。

**注意**  
您可以為每個需要它的規則陳述式指定單一請求元件。若要檢查請求的多個元件，請為每個元件建立規則陳述式。

 AWS WAF 主控台和 API 文件為下列位置的請求元件設定提供指引：
+ 主控台上的**規則建置器** – 在一般規則類型的**陳述式**設定中，選擇您要在請求元件下的**檢查**對話中檢查的元件。 ****
+ **API 陳述式內容** – `FieldToMatch`

本節的其餘部分說明 Web 請求要檢查的部分選項。

**Topics**
+ [HTTP 方法](#waf-rule-statement-request-component-http-method)
+ [單一標頭](#waf-rule-statement-request-component-single-header)
+ [所有標頭](#waf-rule-statement-request-component-headers)
+ [標頭順序](#waf-rule-statement-request-component-header-order)
+ [Cookie](#waf-rule-statement-request-component-cookies)
+ [URI 片段](#waf-rule-statement-request-component-uri-fragment)
+ [URI 路徑](#waf-rule-statement-request-component-uri-path)
+ [JA3 指紋](#waf-rule-statement-request-component-ja3-fingerprint)
+ [JA4 指紋](#waf-rule-statement-request-component-ja4-fingerprint)
+ [查詢字串](#waf-rule-statement-request-component-query-string)
+ [單一查詢參數](#waf-rule-statement-request-component-single-query-param)
+ [所有查詢參數](#waf-rule-statement-request-component-all-query-params)
+ [Body](#waf-rule-statement-request-component-body)
+ [JSON 內文](#waf-rule-statement-request-component-json-body)

## HTTP 方法
<a name="waf-rule-statement-request-component-http-method"></a>

檢查 HTTP 方法是否有請求。HTTP 方法表示 Web 請求請求要求您受保護資源執行的操作類型，例如 `POST`或 `GET`。

## 單一標頭
<a name="waf-rule-statement-request-component-single-header"></a>

檢查請求中的單一具名標頭。

對於此選項，您可以指定標頭名稱，例如 `User-Agent`或 `Referer`。名稱的字串比對不區分大小寫，會在從請求標頭和規則修剪前後空格後執行。

## 所有標頭
<a name="waf-rule-statement-request-component-headers"></a>

檢查所有請求標頭，包括 Cookie。您可以套用篩選條件來檢查所有標頭的子集。

針對此選項，您提供下列規格：
+ **比對模式** – 用來在標頭索引鍵中取得這些模式之 inspection. AWS WAF looks 標頭子集的篩選條件。

  比對模式設定可以是下列其中一項：
  + **全部** – 符合所有金鑰。評估所有標頭的規則檢查條件。
  + **排除標頭** – 僅檢查其索引鍵不符合您在此處指定之任何字串的標頭。金鑰的字串比對不區分大小寫。比對會在從請求標頭和比對規則修剪開頭和結尾空格後執行。
  + **包含的標頭** – 僅檢查金鑰與您在此處指定的其中一個字串相符的標頭。金鑰的字串比對不區分大小寫。比對會在從請求標頭和比對規則修剪開頭和結尾空格後執行。
+ **比對範圍** – AWS WAF 應該使用規則檢查條件進行檢查的標頭部分。您可以指定**金鑰**、**值**或**全部**，以檢查金鑰和值是否相符。

  **全部**不需要在索引鍵中找到相符項目，以及在值中找到相符項目。它需要在索引鍵或值或兩者中找到相符項目。若要在金鑰和值中要求比對，請使用邏輯`AND`陳述式來結合兩個比對規則，其中一個規則會檢查金鑰，另一個規則則會檢查值。
+ **過大處理** – AWS WAF 應如何處理標頭資料大於 AWS WAF 的請求。 最多 AWS WAF 可以檢查請求標頭的前 8 KB (8，192 位元組） 和前 200 個標頭。內容最多可 AWS WAF 達第一個限制可供檢查。您可以選擇繼續檢查，或略過檢查並將請求標記為符合或不符合規則。如需處理過大內容的詳細資訊，請參閱 [在 中過大 Web 請求元件 AWS WAF](waf-oversize-request-components.md)。

## 標頭順序
<a name="waf-rule-statement-request-component-header-order"></a>

檢查包含請求標頭名稱清單的字串，其順序如 AWS WAF 接收以供檢查的 Web 請求中所示。 AWS WAF 會產生字串，然後使用該字串做為欄位來比對其檢查中的元件。 會將字串中的標頭名稱與冒號 AWS WAF 分隔，且沒有新增空格，例如 `host:user-agent:accept:authorization:referer`。

針對此選項，您提供下列規格：
+ **過大處理** – AWS WAF 應如何處理標頭資料超過 AWS WAF 可檢查數量或更大的請求。 最多 AWS WAF 可以檢查請求標頭的前 8 KB (8，192 個位元組） 和前 200 個標頭。內容最多可 AWS WAF 達第一個限制可供檢查。您可以選擇繼續檢查可用的標頭，或略過檢查並將請求標記為符合或不符合規則。如需處理過大內容的詳細資訊，請參閱 [在 中過大 Web 請求元件 AWS WAF](waf-oversize-request-components.md)。

## Cookie
<a name="waf-rule-statement-request-component-cookies"></a>

檢查所有請求 Cookie。您可以套用篩選條件來檢查所有 Cookie 的子集。

針對此選項，您提供下列規格：
+ **比對模式** – 用來取得一部分 Cookie 進行檢查的篩選條件。 會在 Cookie 金鑰中 AWS WAF 尋找這些模式。

  比對模式設定可以是下列其中一項：
  + **全部** – 比對所有金鑰。評估所有 Cookie 的規則檢查條件。
  + **排除的 Cookie** – 僅檢查金鑰與您在此處指定的任何字串不相符的 Cookie。金鑰的字串比對區分大小寫，而且必須完全正確。
  + **包含的 Cookie** – 僅檢查金鑰與您在此處指定的其中一個字串相符的 Cookie。金鑰的字串比對區分大小寫，而且必須完全正確。
+ **比對範圍** – AWS WAF 應使用規則檢查條件檢查的 Cookie 部分。您可以同時為**金鑰**和**值**指定金鑰、值或**全部**。

  **全部**不需要在索引鍵中找到相符項目，以及在值中找到相符項目。它需要在索引鍵或值或兩者中找到相符項目。若要在金鑰和值中要求比對，請使用邏輯`AND`陳述式來結合兩個比對規則，其中一個規則會檢查金鑰，另一個規則則會檢查值。
+ **過大處理** – AWS WAF 應如何處理 Cookie 資料大於 AWS WAF 可檢查的請求。 最多 AWS WAF 可以檢查請求 Cookie 的前 8 KB (8，192 位元組） 和前 200 個 Cookie。內容最多可 AWS WAF 達第一個限制可供檢查。您可以選擇繼續檢查，或略過檢查並將請求標記為符合或不符合規則。如需處理過大內容的詳細資訊，請參閱 [在 中過大 Web 請求元件 AWS WAF](waf-oversize-request-components.md)。

## URI 片段
<a name="waf-rule-statement-request-component-uri-fragment"></a>

**注意**  
Uri Fragment 檢查僅適用於 CloudFront 分佈和 Application Load Balancer。

檢查遵循 "\$1" 符號的 URL 部分，提供資源的其他資訊，例如 \$1section2。如需詳細資訊，請參閱[統一資源識別符 (URI)：一般語法](https://tools.ietf.org/html/rfc3986#section-3)。

如果您不搭配此選項使用文字轉換， AWS WAF 不會正規化 URI 片段，並完全依照在請求中從用戶端接收到的 URI 片段進行檢查。如需文字轉換的資訊，請參閱 [在 中使用文字轉換 AWS WAF](waf-rule-statement-transformation.md)。

**規則陳述式要求**  
您必須為此規則陳述式提供備用行為。如果 URI 缺少片段或相關聯的服務不是 Application Load Balancer 或 CloudFront，則備用行為是您想要 AWS WAF 指派給 Web 請求的比對狀態。如果您選擇比對， 會將請求 AWS WAF 視為比對規則陳述式，並將規則動作套用至請求。如果您選擇不相符， 會將請求 AWS WAF 視為不符合規則陳述式。

## URI 路徑
<a name="waf-rule-statement-request-component-uri-path"></a>

檢查識別資源的 URL 部分，例如 `/images/daily-ad.jpg`。如需詳細資訊，請參閱[統一資源識別符 (URI)：一般語法](https://tools.ietf.org/html/rfc3986#section-3)。

如果您不搭配此選項使用文字轉換， AWS WAF 不會正規化 URI，並完全依照在請求中從用戶端接收 URI 的方式進行檢查。如需文字轉換的資訊，請參閱 [在 中使用文字轉換 AWS WAF](waf-rule-statement-transformation.md)。

## JA3 指紋
<a name="waf-rule-statement-request-component-ja3-fingerprint"></a>

檢查請求的 JA3 指紋。

**注意**  
JA3 指紋檢查僅適用於 Amazon CloudFront 分佈和 Application Load Balancer。

JA3 指紋是從傳入請求的 TLS Client Hello 衍生的 32 個字元雜湊。此指紋可做為用戶端 TLS 組態的唯一識別符。 會針對具有足夠 TLS Client Hello 資訊以進行計算的每個請求 AWS WAF ，計算並記錄此指紋。幾乎所有 Web 請求都包含此資訊。

**如何取得用戶端的 JA3 指紋**  
您可以從保護套件 (Web ACL) 日誌取得用戶端請求的 JA3 指紋。如果 AWS WAF 能夠計算指紋，它會將其包含在日誌中。如需記錄欄位的資訊，請參閱 [保護套件 (Web ACL) 流量的日誌欄位](logging-fields.md)。

**規則陳述式要求**  
您只能在設定為完全符合您提供的字串的字串比對陳述式內檢查 JA3 指紋。在字串比對陳述式規格中提供來自日誌的 JA3 指紋字串，以符合具有相同 TLS 組態的任何未來請求。如需字串比對陳述式的詳細資訊，請參閱 [字串比對規則陳述式](waf-rule-statement-type-string-match.md)。

您必須為此規則陳述式提供備用行為。如果 無法計算 JA3 指紋，則備用行為是您想要 AWS WAF 指派給 Web 請求 AWS WAF 的比對狀態。如果您選擇比對， AWS WAF 會將請求視為比對規則陳述式，並將規則動作套用至請求。如果您選擇不相符， 會將請求 AWS WAF 視為不符合規則陳述式。

若要使用此比對選項，您必須記錄保護套件 (Web ACL) 流量。如需相關資訊，請參閱[記錄 AWS WAF 保護套件 (Web ACL) 流量](logging.md)。

## JA4 指紋
<a name="waf-rule-statement-request-component-ja4-fingerprint"></a>

檢查請求的 JA4 指紋。

**注意**  
JA4 指紋檢查僅適用於 Amazon CloudFront 分佈和 Application Load Balancer。

JA4 指紋是從傳入請求的 TLS Client Hello 衍生的 36 個字元雜湊。此指紋可做為用戶端 TLS 組態的唯一識別符。JA4 指紋是 JA3 指紋的延伸，可能會導致某些瀏覽器產生較少的唯一指紋。 會為每個具有足夠 TLS Client Hello 資訊的請求 AWS WAF 計算並記錄此指紋。幾乎所有 Web 請求都包含此資訊。

**如何取得用戶端的 JA4 指紋**  
您可以從保護套件 (Web ACL) 日誌取得用戶端請求的 JA4 指紋。如果 AWS WAF 能夠計算指紋，它會將其包含在日誌中。如需記錄欄位的資訊，請參閱 [保護套件 (Web ACL) 流量的日誌欄位](logging-fields.md)。

**規則陳述式要求**  
您只能在設定為完全符合您提供的字串的字串比對陳述式內檢查 JA4 指紋。在字串比對陳述式規格中提供來自日誌的 JA4 指紋字串，以符合任何未來具有相同 TLS 組態的請求。如需字串比對陳述式的詳細資訊，請參閱 [字串比對規則陳述式](waf-rule-statement-type-string-match.md)。

您必須為此規則陳述式提供備用行為。如果 無法計算 JA4 指紋，則備用行為是您想要 AWS WAF 指派給 Web 請求 AWS WAF 的比對狀態。如果您選擇比對， AWS WAF 會將請求視為比對規則陳述式，並將規則動作套用至請求。如果您選擇不相符， 會將請求 AWS WAF 視為不符合規則陳述式。

若要使用此比對選項，您必須記錄保護套件 (Web ACL) 流量。如需相關資訊，請參閱[記錄 AWS WAF 保護套件 (Web ACL) 流量](logging.md)。

## 查詢字串
<a name="waf-rule-statement-request-component-query-string"></a>

檢查`?`字元後面出現的 URL 部分，如果有的話。

**注意**  
對於跨網站指令碼比對陳述式，我們建議您選擇**所有查詢參數**，而不是**查詢字串**。選擇**所有查詢參數**會將 10 WCUs 新增至基本成本。

## 單一查詢參數
<a name="waf-rule-statement-request-component-single-query-param"></a>

檢查您已定義為查詢字串一部分的單一查詢參數。 AWS WAF 會檢查您指定的參數值。

針對此選項，您也可以指定**查詢引數**。例如，如果 URL 為 `www.xyz.com?UserName=abc&SalesRegion=seattle`，您可以`SalesRegion`為查詢引數指定 `UserName`或 。引數名稱的長度上限為 30 個字元。名稱不區分大小寫，因此如果您指定 `UserName`， 會 AWS WAF 比對 的所有變化`UserName`，包括 `username`和 `UsERName`。

如果查詢字串包含您所指定查詢引數的多個執行個體， 會使用OR邏輯 AWS WAF 檢查相符項目的所有值。例如，在 URL `www.xyz.com?SalesRegion=boston&SalesRegion=seattle` 中， AWS WAF 會評估您針對 `boston` 和 `seattle` 指定的名稱。如果其中一個相符，則檢查會是相符。

## 所有查詢參數
<a name="waf-rule-statement-request-component-all-query-params"></a>

檢查請求中的所有查詢參數。這類似於單一查詢參數元件選擇，但會 AWS WAF 檢查查詢字串中所有引數的值。例如，如果 URL 為 `www.xyz.com?UserName=abc&SalesRegion=seattle`，則 AWS WAF 會在 `UserName` 或 `SalesRegion` 的值符合比對檢查準則時觸發比對。

選擇此選項會將 10 WCUs 新增至基本成本。

## Body
<a name="waf-rule-statement-request-component-body"></a>

檢查請求內文，評估為純文字。您也可以使用JSON內容類型將內文評估為 JSON。

請求內文是緊接請求標頭的請求部分。它包含 Web 請求所需的任何其他資料，例如來自表單的資料。
+ 在 主控台中，您可以透過選取**內容類型**選擇**純文字**，在**請求選項**選擇**內文**下選取此選項。
+ 在 API 中，在規則的`FieldToMatch`規格中，您可以指定 `Body`以純文字形式檢查請求內文。

對於 Application Load Balancer 和 AWS AppSync， AWS WAF 可以檢查請求內文的前 8 KB。對於 CloudFront、API Gateway、Amazon Cognito、App Runner 和 Verified Access，預設 AWS WAF 可以檢查前 16 KB，而且您可以將保護套件 (Web ACL) 組態中的限制提高到 64 KB。如需詳細資訊，請參閱[在 中管理主體檢查的考量事項 AWS WAF](web-acl-setting-body-inspection-limit.md)。

您必須為此元件類型指定過大處理。過大處理定義 AWS WAF 如何處理內文資料大於 AWS WAF 可檢查的請求。您可以選擇繼續檢查，或略過檢查並將請求標記為符合或不符合規則。如需處理過大內容的詳細資訊，請參閱 [在 中過大 Web 請求元件 AWS WAF](waf-oversize-request-components.md)。

您也可以將內文評估為剖析的 JSON。如需詳細資訊，請參閱以下章節。

## JSON 內文
<a name="waf-rule-statement-request-component-json-body"></a>

檢查請求內文，評估為 JSON。您也可以將內文評估為純文字。

請求內文是緊接請求標頭的請求部分。它包含 Web 請求所需的任何其他資料，例如來自表單的資料。
+ 在主控台中，您可以透過選取**內容類型**選擇 **JSON**，在**請求選項**選擇**內文**下選取此選項。
+ 在 API 的規則`FieldToMatch`規格中，您可以指定 `JsonBody`。

對於 Application Load Balancer 和 AWS AppSync， AWS WAF 可以檢查請求內文的前 8 KB。根據預設，對於 CloudFront、API Gateway、Amazon Cognito、App Runner 和 Verified Access， AWS WAF 可以檢查前 16 KB，而且您可以將保護套件 (Web ACL) 組態中的限制提高到 64 KB。如需詳細資訊，請參閱[在 中管理主體檢查的考量事項 AWS WAF](web-acl-setting-body-inspection-limit.md)。

您必須為此元件類型指定過大處理。過大處理定義 AWS WAF 如何處理內文資料大於 AWS WAF 可檢查的請求。您可以選擇繼續檢查，或略過檢查並將請求標記為符合或不符合規則。如需處理過大內容的詳細資訊，請參閱 [在 中過大 Web 請求元件 AWS WAF](waf-oversize-request-components.md)。

選擇此選項會將比對陳述式的基本成本 WCUs加倍。例如，如果比對陳述式基本成本為 5 WCUs而沒有 JSON 剖析，則使用 JSON 剖析會將成本加倍為 10 WCUs。

對於此選項，您可以提供其他規格，如下節所述。

**AWS WAF 如何處理 JSON 內文檢查**  
當 將 Web 請求內文 AWS WAF 檢查為 JSON 時，它會執行步驟來剖析內文，並擷取 JSON 元素以進行檢查。 會根據您的組態選擇 AWS WAF 執行這些步驟。

下列列出 AWS WAF 執行的步驟。

1. **剖析內文內容** – AWS WAF 剖析 Web 請求內文的內容，以擷取 JSON 元素進行檢查。 AWS WAF 會盡力剖析內文的整個內容，但剖析可能會因內容中的各種錯誤狀態而失敗。範例包括無效的字元、重複的金鑰、截斷，以及根節點不是物件或陣列的內容。

   選項內**文剖析後援行為**會決定如果無法完整剖析 JSON 內文， AWS WAF 該怎麼辦：
   + **None （預設行為）** - 評估 AWS WAF 內容直到遇到剖析錯誤為止。
   + **評估為字串** - 檢查內文為純文字。 會將您為 JSON 檢查定義的文字轉換和檢查條件 AWS WAF 套用至內文文字字串。
   + **相符** - 將 Web 請求視為符合規則陳述式。 會將規則動作 AWS WAF 套用至請求。
   + **不相符** - 將 Web 請求視為不符合規則陳述式。
**注意**  
此備用行為只會在剖析 JSON 字串 AWS WAF 時發生錯誤時觸發。

**剖析無法完全驗證 JSON**  
AWS WAF 剖析不會完全驗證輸入 JSON 字串，因此即使 JSON 無效，剖析也會成功。

   例如， 會 AWS WAF 剖析下列無錯誤的無效 JSON：
   + 缺失逗號：`{"key1":"value1""key2":"value2"}`
   + 缺失冒號：`{"key1":"value1","key2""value2"}`
   + 額外冒號：`{"key1"::"value1","key2""value2"}`

   對於剖析成功但結果不是完全有效 JSON 的這類案例，評估中後續步驟的結果可能會有所不同。擷取可能會遺漏一些元素，或者規則評估可能會有非預期的結果。我們建議您驗證應用程式中收到的 JSON，並視需要處理無效的 JSON。

1. **擷取 JSON 元素** – 根據您的設定 AWS WAF 識別要檢查的 JSON 元素子集：
   + 選項 **JSON 比對範圍**指定 JSON 中 AWS WAF 應檢查的元素類型。

     您可以同時為**金鑰**和**值**指定金鑰、值或**全部**。

     **全部**不需要在索引鍵中找到相符項目，以及在值中找到相符項目。它需要在索引鍵或值或兩者中找到相符項目。若要在金鑰和值中要求相符項目，請使用邏輯`AND`陳述式來結合兩個相符規則，一個規則會檢查金鑰，另一個規則則會檢查值。
   + **要檢查的選項 內容**指定如何篩選設定為您要 AWS WAF 檢查之子集的元素。

     您必須指定下列其中一項：
     + **完整 JSON 內容** - 評估所有元素。
     + **僅包含的元素** - 僅評估路徑符合您提供的 JSON 指標條件的元素。請勿使用此選項來指示 JSON 中的所有**路徑。請改用**完整 JSON 內容**。

       如需 JSON 指標語法的相關資訊，請參閱網際網路工程任務小組 (IETF) 文件 [JavaScript 物件標記法 (JSON) 指標](https://tools.ietf.org/html/rfc6901)。

       例如，在 主控台中，您可以提供下列項目：

       ```
       /dogs/0/name
       /dogs/1/name
       ```

       在 API 或 CLI 中，您可以提供下列項目：

       ```
       "IncludedPaths": ["/dogs/0/name", "/dogs/1/name"]
       ```

   例如，假設**要檢查設定的內容**是**僅包含的元素**，而包含的元素設定是 `/a/b`。

   對於下列範例 JSON 內文：

   ```
   { 
     "a":{
       "c":"d",
       "b":{
         "e":{
           "f":"g"
         }
       }
     }
   }
   ```

    AWS WAF 會檢查每個 **JSON 比對範圍**設定的元素集如下所示。請注意`b`，金鑰 是包含元素路徑的一部分，因此不會進行評估。
   + **全部**：`e`、 `f,`和 `g`。
   + **金鑰**： `e`和 `f`。
   + **值**：`g`。

1. **檢查 JSON 元素集** – 將您指定的任何文字轉換 AWS WAF 套用至擷取的 JSON 元素，然後將產生的元素集與規則陳述式的比對條件相符。這與其他 Web 請求元件的轉換和評估行為相同。如果任何擷取的 JSON 元素相符，表示 Web 請求符合規則。

# 在 中使用轉送的 IP 地址 AWS WAF
<a name="waf-rule-statement-forwarded-ip-address"></a>

本節適用於使用 Web 請求 IP 地址的規則陳述式。根據預設， AWS WAF 會使用來自 Web 請求原始伺服器的 IP 地址。不過，如果 Web 請求通過一或多個代理或負載平衡器，Web 請求原始伺服器將包含最後一個代理的地址，而不是用戶端的原始地址。在這種情況下，來源用戶端地址通常會在另一個 HTTP 標頭中轉送。此標頭通常是 `X-Forwarded-For`(XFF)，但可以是不同的標頭。

**使用 IP 地址的規則陳述式**  
使用 IP 地址的規則陳述式如下：
+ [IP 集合比對](waf-rule-statement-type-ipset-match.md) - 檢查 IP 地址是否與 IP 集中定義的地址相符。
+ [地理比對](waf-rule-statement-type-geo-match.md) - 使用 IP 地址來判斷原始國家/地區和區域，並將原始國家/地區與國家/地區清單比對。
+ [ASN 比對](waf-rule-statement-type-asn-match.md) - 使用 IP 地址來判斷自治系統編號 (ASN)，並將 ASN 與 ASNs清單比對。
+ [使用以速率為基礎的規則陳述式](waf-rule-statement-type-rate-based.md) - 可以依其 IP 地址彙總請求，以確保個別 IP 地址不會以過高的速率傳送請求。您可以單獨使用 IP 地址彙總，或與其他彙總金鑰結合使用。

您可以指示 從 `X-Forwarded-For`標頭或另一個 HTTP 標頭使用任何這些規則陳述式的 AWS WAF 轉送 IP 地址，而不是使用 Web 請求的原始伺服器。如需如何提供規格的詳細資訊，請參閱個別規則陳述式類型的指引。

**注意**  
如果缺少標頭， 會 AWS WAF 評估使用該標頭的任何陳述式為「不相符」。如果您使用 NOT 陳述式搭配 "No match" 結果， 會將評估 AWS WAF 轉換為 "Match"。缺少標頭不會觸發備用行為 - 只有無效的標頭值才會觸發。

**備用行為**  
當您使用轉送的 IP 地址時，如果請求在指定位置沒有有效的 IP 地址，您會指出 AWS WAF 要指派給 Web 請求的比對狀態：
+ **MATCH** - 將 Web 請求視為符合規則陳述式。 會將規則動作 AWS WAF 套用至請求。
+ **NO MATCH** - 將 Web 請求視為不符合規則陳述式。

**機器人 AWS WAF 控制中使用的 IP 地址**  
Bot Control 受管規則群組會使用來自 的 IP 地址來驗證機器人 AWS WAF。如果您使用 Bot Control，而且已驗證透過代理或負載平衡器路由的機器人，則需要使用自訂規則明確允許它們。例如，您可以設定自訂 IP 集比對規則，使用轉送的 IP 地址來偵測和允許已驗證的機器人。您可以使用 規則，以多種方式自訂機器人管理。如需詳細資訊和範例，請參閱 [AWS WAF 機器人控制](waf-bot-control.md)。

**使用轉送 IP 地址的一般考量**  
在使用轉送的 IP 地址之前，請注意下列一般注意事項：
+ 代理可以沿途修改標頭，代理可能會以不同的方式處理標頭。
+ 攻擊者可能會更改 標頭的內容，以嘗試繞過 AWS WAF 檢查。
+ 標頭內的 IP 地址可能格式錯誤或無效。
+ 您指定的標頭可能完全不存在於請求中。

**搭配 使用轉送 IP 地址的考量 AWS WAF**  
下列清單說明在 中使用轉送 IP 地址的要求和注意事項 AWS WAF：
+ 對於任何單一規則，您可以為轉送的 IP 地址指定一個標頭。標頭規格不區分大小寫。
+ 對於以速率為基礎的規則陳述式，任何巢狀範圍陳述式都不會繼承轉送的 IP 組態。為使用轉送 IP 地址的每個陳述式指定組態。
+ 對於地理比對、ASN 比對和以速率為基礎的規則， AWS WAF 會使用 標頭中的第一個地址。例如，如果標頭包含 `10.1.1.1, 127.0.0.0, 10.10.10.10` AWS WAF 使用 `10.1.1.1`
+ 對於 IP 集比對，您可以指出要比對標頭中的第一個、最後一個或任何地址。如果您指定任何 ， 會 AWS WAF 檢查標頭中的所有地址是否相符，最多 10 個地址。如果標頭包含超過 10 個地址， 會 AWS WAF 檢查最後 10 個地址。
+ 包含多個地址的標頭必須在地址之間使用逗號分隔符號。如果請求使用逗號以外的分隔符號， AWS WAF 會將標頭中的 IP 地址視為格式錯誤。
+ 如果標頭內的 IP 地址格式錯誤或無效， AWS WAF 會根據您在轉送 IP 組態中指定的備用行為，將 Web 請求指定為符合規則或不相符。
+ 如果您指定的標頭不存在於請求中， AWS WAF 則 不會將規則套用至請求。這表示 AWS WAF 不會套用規則動作，也不會套用備用行為。
+ 針對 IP 地址使用轉送 IP 標頭的規則陳述式不會使用 Web 請求原始伺服器報告的 IP 地址。

**搭配 使用轉送 IP 地址的最佳實務 AWS WAF**  
當您使用轉送的 IP 地址時，請使用下列最佳實務：
+ 在啟用轉送 IP 組態之前，請仔細考慮請求標頭的所有可能狀態。您可能需要使用多個規則來取得您想要的行為。
+ 若要檢查多個轉送 IP 標頭或檢查 Web 請求原始伺服器和轉送 IP 標頭，請為每個 IP 地址來源使用一個規則。
+ 若要封鎖具有無效標頭的 Web 請求，請設定規則動作來封鎖和設定要符合之轉送 IP 組態的備用行為。

**轉送 IP 地址的範例 JSON**  
下列地理比對陳述式只有在 `X-Forwarded-For` 標頭包含的 IP 原始國家/地區為 時才會相符`US`：

```
{
  "Name": "XFFTestGeo",
  "Priority": 0,
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "XFFTestGeo"
  },
  "Statement": {
    "GeoMatchStatement": {
      "CountryCodes": [
        "US"
      ],
      "ForwardedIPConfig": {
        "HeaderName": "x-forwarded-for",
        "FallbackBehavior": "MATCH"
      }
    }
  }
}
```

下列以速率為基礎的規則會根據 `X-Forwarded-For`標頭中的第一個 IP 彙總請求。規則只會計算符合巢狀地理比對陳述式的請求，而且只會封鎖符合地理比對陳述式的請求。巢狀地理比對陳述式也會使用 `X-Forwarded-For`標頭來判斷 IP 地址是否指出 的原始國家/地區`US`。如果存在，或者如果標頭存在但格式不正確，則地理比對陳述式會傳回相符項目。

```
{
  "Name": "XFFTestRateGeo",
  "Priority": 0,
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "XFFTestRateGeo"
  },
  "Statement": {
    "RateBasedStatement": {
      "Limit": "100",
      "AggregateKeyType": "FORWARDED_IP",
      "ScopeDownStatement": {
        "GeoMatchStatement": {
          "CountryCodes": [
            "US"
          ],
          "ForwardedIPConfig": {
            "HeaderName": "x-forwarded-for",
            "FallbackBehavior": "MATCH"
          }
        }
      },
      "ForwardedIPConfig": {
        "HeaderName": "x-forwarded-for",
        "FallbackBehavior": "MATCH"
      }
    }
  }
}
```

# 在 中檢查 HTTP/2 虛擬標頭 AWS WAF
<a name="waf-rule-statement-request-components-for-http2-pseudo-headers"></a>

本節說明如何使用 AWS WAF 檢查 HTTP/2 虛擬標頭。

支援 HTTP/2 流量的受保護 AWS 資源不會將 HTTP/2 虛擬標頭轉送至 AWS WAF 進行檢查，但會在 AWS WAF 檢查的 Web 請求元件中提供虛擬標頭的內容。

您可以使用 僅 AWS WAF 檢查下表中列出的虛擬標頭。


**HTTP/2 虛擬標頭內容映射至 Web 請求元件**  

| HTTP/2 虛擬標頭 | 要檢查的 Web 請求元件 | 文件 | 
| --- | --- | --- | 
|  `:method`  |  HTTP 方法   |  [HTTP 方法](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-http-method)  | 
|  `:authority`  |  `Host` 標頭   |  [單一標頭](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-single-header)  [所有標頭](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-headers)  | 
|  `:path` URI 路徑  | URI 路徑  | [URI 路徑](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-uri-path) | 
|  `:path` 查詢  |  查詢字串  |  [查詢字串](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-query-string) [單一查詢參數](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-single-query-param) [所有查詢參數](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-all-query-params)  | 

# 在 中使用文字轉換 AWS WAF
<a name="waf-rule-statement-transformation"></a>

本節說明如何在檢查請求之前提供 AWS WAF 要套用的轉換。

在尋找模式或設定限制條件的陳述式中，您可以在檢查請求之前提供 AWS WAF 要套用的轉換。轉換會將 Web 請求重新格式化，以避免攻擊者用來試圖略過 AWS WAF的某些異常格式。

當您搭配 JSON 內文請求元件選擇使用時， AWS WAF 會在剖析和擷取元素以從 JSON 檢查之後套用轉換。如需詳細資訊，請參閱[JSON 內文](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-json-body)。

如果您提供多個轉換，您也可以設定讓 AWS WAF 套用它們的順序。

**WCUs** – 每個文字轉換都是 10 WCUs。

 AWS WAF 主控台和 API 文件也提供下列位置中這些設定的指引：
+ 主控台上的**規則建置器** – **文字轉換**。當您使用請求元件時，此選項可供使用。
+ **API 陳述式內容** – `TextTransformations`文字轉換的選項

每個轉換清單會顯示主控台和 API 規格，後面接著描述。

Base64 decode – `BASE64_DECODE`  
AWS WAF 解碼 Base64-encoded字串。

Base64 decode extension – `BASE64_DECODE_EXT`  
AWS WAF 解碼 Base64-encoded字串，但使用忽略無效字元的寬容實作。

Command line – `CMD_LINE`  
此選項可緩解攻擊者可能注入作業系統命令列命令，並使用異常格式來掩飾部分或全部命令的情況。  
使用此選項可執行下列轉換：  
+ 刪除以下字元：`\ " ' ^`
+ 刪除以下字元前的空格：`/ (`
+ 將以下字元取代為空格：`, ;`
+ 將數個空格取代為一個空格
+ 將大寫字母 `A-Z` 轉換成小寫字母 `a-z`

Compress whitespace – `COMPRESS_WHITE_SPACE`  
AWS WAF 壓縮空格的方式是將多個空格取代為一個空格，並將下列字元取代為空格字元 (ASCII 32)：  
+ Formfeed (ASCII 12)
+ Tab (ASCII 9)
+ Newline (ASCII 10)
+ 歸位運送 (ASCII 13)
+ 垂直標籤 (ASCII 11)
+ 非中斷空間 (ASCII 160)

CSS decode – `CSS_DECODE`  
AWS WAF 解碼使用 CSS 2.x 逸出規則 編碼的字元。 `syndata.html#characters`此函數在解碼過程中最多使用兩個位元組，因此它可以幫助您發現使用 CSS 編碼進行編碼的 ASCII 字元 (這些字元通常不會被編碼)。它在反擊逃脫方面也很有用，後者是反斜線和非十六進位字元的組合。例如，`javascript` 的 `ja\vascript`。

Escape sequences decode – `ESCAPE_SEQ_DECODE`  
AWS WAF 解碼下列 ANSI C 逸出序列：`\a`、`\b`、`\f`、`\n`、`\r``\t`、、`\v`、`\\``\?`、`\'`、`\"`、、 `\xHH` （十六進位）、`\0OOO`（八進位）。無效的編碼會保留在輸出中。

Hex decode – `HEX_DECODE`  
AWS WAF 會將十六進位字元字串解碼為二進位。

HTML entity decode – `HTML_ENTITY_DECODE`  
AWS WAF 會將以十六進位格式`&#xhhhh;`或十進位格式表示的字元`&#nnnn;`取代為對應的字元。  
AWS WAF 會以未編碼的字元取代下列 HTML 編碼的字元。此清單使用小寫 HTML 編碼，但處理方式不區分大小寫，例如`&quot;`，`&QuOt;`且視為相同。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/waf/latest/developerguide/waf-rule-statement-transformation.html)

JS decode – `JS_DECODE`  
AWS WAF 解碼 JavaScript 逸出序列。如果`\uHHHH`程式碼在 的完整寬度 ASCII 程式碼範圍內`FF01-FF5E`，則會使用較高的位元組來偵測和調整較低的位元組。如果不是，則只會使用較低的位元組，並將較高的位元組歸零，而這可能導致資訊遺失。

Lowercase – `LOWERCASE`  
AWS WAF 將大寫字母 (A-Z) 轉換為小寫 (a-z)。

MD5 – `MD5`  
AWS WAF 從輸入中的資料計算 MD5 雜湊。計算出的雜湊是原始二進位形式。

None – `NONE`  
AWS WAF 會檢查 Web 請求是否收到，而不會進行任何文字轉換。

Normalize path – `NORMALIZE_PATH`  
AWS WAF 透過移除不在輸入開頭的多個斜線、目錄自我參考和目錄回溯參考來標準化輸入字串。

Normalize path Windows – `NORMALIZE_PATH_WIN`  
AWS WAF 轉換反斜線字元以轉送斜線，然後使用`NORMALIZE_PATH`轉換處理產生的字串。

Remove nulls – `REMOVE_NULLS`  
AWS WAF 會從輸入中移除所有`NULL`位元組。

Replace comments – `REPLACE_COMMENTS`  
AWS WAF 會以單一空格取代每次出現的 C 樣式註解 (/\$1 ... \$1/)。它不會壓縮多個連續的出現次數。它以空格 (ASCII 0x20) 取代未終止的註解。它不會變更註解的獨立終止 (\$1/)。

Replace nulls – `REPLACE_NULLS`  
AWS WAF 會以空格字元 (ASCII 0x20) `NULL` 取代輸入中的每個位元組。

SQL hex decode – `SQL_HEX_DECODE`  
AWS WAF 解碼 SQL 十六進位資料。例如，將 (`0x414243`) AWS WAF 解碼為 (`ABC`)。

URL decode – `URL_DECODE`  
AWS WAF 解碼 URL 編碼的值。

URL decode Unicode – `URL_DECODE_UNI`  
與 類似`URL_DECODE`，但支援 Microsoft 特定`%u`編碼。如果代碼是在 `FF01-FF5E` 的全形 ASCII 碼範圍內，則使用較高的位元組來偵測和調整較低的位元組。否則，只會使用較低的位元組，而較高的位元組會歸零。

UTF8 to Unicode – `UTF8_TO_UNICODE`  
AWS WAF 將所有 UTF-8 字元序列轉換為 Unicode。這有助於標準化輸入，並將非英文語言的偽陽性和偽陰性降至最低。

# 在 中使用縮小範圍陳述式 AWS WAF
<a name="waf-rule-scope-down-statements"></a>

本節說明縮小範圍陳述式及其運作方式。

縮小範圍陳述式是一種可巢狀規則陳述式，您可以在受管規則群組陳述式或速率型陳述式中新增，以縮小包含規則評估的一組請求。包含規則只會評估最先符合範圍縮小陳述式的請求。
+ **受管規則群組陳述式** – 如果您將縮小範圍陳述式新增至受管規則群組陳述式， 會將不符合縮小範圍陳述式的任何請求 AWS WAF 評估為不符合規則群組。只有符合縮小範圍陳述式的請求才會針對規則群組進行評估。對於定價基於評估請求數量的受管規則群組，縮小範圍陳述式有助於包含成本。

  如需受管規則群組陳述式的詳細資訊，請參閱 [在 中使用受管規則群組陳述式 AWS WAF](waf-rule-statement-type-managed-rule-group.md)。
+ **速率型規則陳述**式 – 沒有範圍縮小陳述式速率的速率型規則陳述式會限制規則評估的所有請求。如果您只想要控制特定類別請求的速率，請將縮小範圍陳述式新增至速率型規則。例如，若要僅追蹤和控制來自特定地理區域的請求率，您可以在地理比對陳述式中指定該地理區域，並將其新增至以速率為基礎的規則作為縮小範圍陳述式。

  如需速率型規則陳述式的詳細資訊，請參閱 [在 中使用以速率為基礎的規則陳述式 AWS WAF](waf-rule-statement-type-rate-based.md)。

您可以在縮小範圍陳述式中使用任何可巢狀規則。如需可用的陳述式，請參閱 [在 中使用相符規則陳述式 AWS WAF](waf-rule-statements-match.md)和 [在 中使用邏輯規則陳述式 AWS WAF](waf-rule-statements-logical.md)。縮小範圍陳述式WCUs 是您在其中定義之規則陳述式所需的 WCUs。使用縮小範圍陳述式無需額外費用。

您可以在一般規則中使用陳述式時，以相同的方式設定縮小範圍陳述式。例如，您可以將文字轉換套用至您正在檢查的 Web 請求元件，也可以指定轉送的 IP 地址做為 IP 地址。這些組態僅適用於縮小範圍陳述式，且不會繼承為包含受管規則群組或速率型規則陳述式的 。

例如，如果您將文字轉換套用至範圍縮小陳述式中的查詢字串，範圍縮小陳述式會在套用轉換之後檢查查詢字串。如果請求符合縮小範圍陳述式條件， AWS WAF 則 會將 Web 請求傳遞至包含其原始狀態的規則，而不包含縮小範圍陳述式的轉換。包含縮小範圍陳述式的規則可能會套用自己的文字轉換，但不會繼承縮小範圍陳述式中的任何內容。

您不能使用縮小範圍陳述式來指定包含規則陳述式的任何請求檢查組態。您不能使用縮小範圍陳述式做為包含規則陳述式的 Web 請求前置處理器。縮小範圍陳述式的唯一角色是判斷哪些請求會傳遞至包含規則陳述式以進行檢查。

# 在 中參考可重複使用的實體 AWS WAF
<a name="waf-rule-statement-reusable-entities"></a>

本節說明可重複使用實體的運作方式 AWS WAF。

有些規則使用可重複使用且由您 AWS或 AWS Marketplace 賣方在 Web ACLs 外部管理的實體。更新可重複使用的實體時， AWS WAF 會將更新傳播至您的規則。例如，如果您在保護套件 (Web ACL) 中使用 AWS 受管規則規則群組，當 AWS 更新規則群組時， 會將變更 AWS 傳播到您的 Web ACL，以更新其行為。如果您在規則中使用 IP 集合陳述式，當您更新集合時， 會將變更 AWS WAF 傳播到所有參考它的規則，因此使用這些規則的任何保護套件 (Web ACLs) 都會隨著您的變更保持up-to-date狀態。

以下是您可以在規則陳述式中使用的可重複使用的實體。
+ **IP 集** – 您可以建立和管理自己的 IP 集。在主控台上，您可以從導覽窗格存取這些項目。如需管理 IP 集合的相關資訊，請參閱 [中的 IP 集和 regex 模式集 AWS WAF](waf-referenced-set-managing.md)。
+ **Regex 比對集** – 您可以建立和管理自己的 regex 比對集。在主控台上，您可以從導覽窗格存取這些項目。如需管理規則運算式模式集的相關資訊，請參閱 [中的 IP 集和 regex 模式集 AWS WAF](waf-referenced-set-managing.md)。
+ **AWS 受管規則規則群組** – AWS 管理這些規則群組。在 主控台上，當您將受管規則群組新增至保護套件 (Web ACL) 時，即可使用這些規則群組。如需這些項目的詳細資訊，請參閱[AWS 受管規則規則群組清單](aws-managed-rule-groups-list.md)。
+ **AWS Marketplace 受管規則群組** – AWS Marketplace 賣方管理這些規則群組，您可以訂閱這些規則群組以使用這些規則群組。若要管理您的訂閱，請在主控台的導覽窗格中選擇 **AWS Marketplace**。當您將 AWS Marketplace 受管規則群組新增至保護套件 (Web ACL) 時，會列出受管規則群組。對於您尚未訂閱的規則群組，您也可以 AWS Marketplace 在該頁面上找到 的連結。如需 AWS Marketplace 賣方受管規則群組的詳細資訊，請參閱 [AWS Marketplace 規則群組](marketplace-rule-groups.md)。
+ **您自己的規則群組** – 您可以管理自己的規則群組，通常當您需要一些無法透過受管規則群組使用的行為時。在主控台上，您可以從導覽窗格存取這些項目。如需詳細資訊，請參閱[管理您自己的規則群組](waf-user-created-rule-groups.md)。

**刪除參考集或規則群組**  
當您刪除參考的實體時， 會 AWS WAF 檢查它目前是否在保護套件 (Web ACL) 中使用。如果 AWS WAF 發現實體正在使用中，它會警告您。 AWS WAF 幾乎總是能夠判斷保護套件 (Web ACL) 是否正在參考實體。但是在極少數的情況下，它也可能無法判斷。如果您需要確定要刪除的實體未在使用中，請在 Web ACL 中檢查它，然後再刪除它。

# 在 中使用相符規則陳述式 AWS WAF
<a name="waf-rule-statements-match"></a>

本節說明什麼是配對陳述式及其運作方式。

比對陳述式會將 Web 請求或其原始伺服器與您提供的條件進行比較。對於此類型的許多陳述式， AWS WAF 會比較符合內容請求的特定元件。

相符陳述式是可巢狀的。您可以在邏輯規則陳述式中巢狀化任何這些陳述式，而且您可以在縮小範圍陳述式中使用它們。如需邏輯規則陳述式的詳細資訊，請參閱 [在 中使用邏輯規則陳述式 AWS WAF](waf-rule-statements-logical.md)。如需縮小範圍陳述式的資訊，請參閱 [在 中使用縮小範圍陳述式 AWS WAF](waf-rule-scope-down-statements.md)。

此表格說明您可以新增至規則的一般比對陳述式，並提供一些準則來計算每個規則的保護套件 (Web ACL) 容量單位 (WCU) 用量。如需 WCU 的相關資訊，請參閱 [中的 Web ACL 容量單位 WCUs) AWS WAF](aws-waf-capacity-units.md)。


| 比對陳述式 | Description | WCU | 
| --- | --- | --- | 
| [地理比對](waf-rule-statement-type-geo-match.md) | 檢查請求的來源國家/地區，並套用來源國家/地區和區域的標籤。 | 1 | 
|  [ASN 比對](waf-rule-statement-type-asn-match.md)  |  針對與 IP 地址和地址範圍相關聯的 ASN 檢查請求。  |  1  | 
|  [IP 集合比對](waf-rule-statement-type-ipset-match.md)  |  針對一組 IP 地址和地址範圍檢查請求。  |  1 表示大多數情況。如果您將陳述式設定為使用具有轉送 IP 地址的標頭，並在 的標頭中指定位置Any，則將 WCUs 增加 4。  | 
|  [標籤比對規則陳述式](waf-rule-statement-type-label-match.md)  |  檢查請求是否有由相同保護套件 (Web ACL) 中其他規則新增的標籤。  |  1   | 
| [Regex 比對規則陳述式](waf-rule-statement-type-regex-match.md) | 將 regex 模式與指定的請求元件進行比較。 | 3，作為基本成本。 如果您使用請求元件 **所有查詢參數**，請新增 10 WCUs。如果您使用請求元件 **JSON 內文**，請將基本成本 WCUs加倍。針對您套用的每個**文字轉換**，新增 10 WCUs。  | 
|  [規則運算式模式集](waf-rule-statement-type-regex-pattern-set-match.md)  |  將規則運算式模式與指定的請求元件比較。  |  每個模式集 25 個，以基本成本表示。 如果您使用請求元件 **所有查詢參數**，請新增 10 WCUs。如果您使用請求元件 **JSON 內文**，請將基本成本 WCUs加倍。針對您套用的每個**文字轉換**，新增 10 WCUs。  | 
| [大小約束](waf-rule-statement-type-size-constraint-match.md) | 針對指定的請求元件檢查大小約束。 | 1，作為基本成本。 如果您使用請求元件 **所有查詢參數**，請新增 10 WCUs。如果您使用請求元件 **JSON 內文**，請將基本成本 WCUs加倍。針對您套用的每個**文字轉換**，新增 10 WCUs。  | 
| [SQLi 攻擊](waf-rule-statement-type-sqli-match.md) | 檢查指定請求元件中的惡意 SQL 程式碼。 | 20，作為基本成本。如果您使用請求元件 **所有查詢參數**，請新增 10 WCUs。如果您使用請求元件 **JSON 內文**，請將基本成本 WCUs加倍。針對您套用的每個**文字轉換**，新增 10 WCUs。 | 
| [字串比對](waf-rule-statement-type-string-match.md) | 比較字串與指定的請求元件。 |  基本成本取決於字串比對的類型，且介於 1 到 10 之間。如果您使用請求元件 **所有查詢參數**，請新增 10 WCUs。如果您使用請求元件 **JSON 內文**，請將基本成本 WCUs加倍。針對您套用的每個**文字轉換**，新增 10 WCUs。  | 
| [XSS 指令碼攻擊](waf-rule-statement-type-xss-match.md) | 檢查指定請求元件中的跨網站指令碼攻擊。 | 40，作為基本成本。如果您使用請求元件 **所有查詢參數**，請新增 10 WCUs。如果您使用請求元件 **JSON 內文**，請將基本成本 WCUs加倍。針對您套用的每個**文字轉換**，新增 10 WCUs。 | 

# 地理比對規則陳述式
<a name="waf-rule-statement-type-geo-match"></a>

本節說明什麼是地理比對陳述式及其運作方式。

使用地理或地理比對陳述式，根據原始國家/地區和區域來管理 Web 請求。地理比對陳述式會將標籤新增至 Web 請求，指出來源國家/地區和來源區域。無論陳述式條件是否符合請求，它都會新增這些標籤。地理比對陳述式也會針對請求的原始國家/地區執行比對。

## 如何使用地理比對陳述式
<a name="waf-rule-statement-geo-how-to-use"></a>

您可以使用地理比對陳述式進行國家或地區比對，如下所示：
+ **國家**/地區 — 您可以使用地理比對規則本身，僅根據請求的來源國家/地區來管理請求。規則陳述式符合國家/地區代碼。您也可以遵循地理比對規則，並在原始國家/地區標籤上使用符合的標籤比對規則。
**注意**  
若要篩選來自香港的流量，請使用地理比對陳述式`HK`中的 ISO 3166-1 alpha-2 國家/地區代碼。
+ **區域** — 使用地理比對規則，後面接著標籤比對規則，根據其來源區域來管理請求。您無法單獨使用地理比對規則來比對區域代碼。

如需使用標籤比對規則的詳細資訊，請參閱 [標籤比對規則陳述式](waf-rule-statement-type-label-match.md)和 [中的 Web 請求標籤 AWS WAF](waf-labels.md)。

## 地理比對陳述式的運作方式
<a name="waf-rule-statement-geo-how-it-works"></a>

使用地理比對陳述式， AWS WAF 管理每個 Web 請求，如下所示：

1. **確定請求的國家和區域代碼** — 根據請求的 IP 地址 AWS WAF 確定請求的國家和區域。根據預設， AWS WAF 會使用 Web 請求原始伺服器的 IP 地址。您可以在規則陳述式設定中啟用轉送的 IP 組態`X-Forwarded-For`， AWS WAF 指示 使用來自替代請求標頭的 IP 地址，例如 。

   AWS WAF 決定使用 MaxMind GeoIP 資料庫的請求位置。MaxMind 在國家/地區層級報告非常高的資料準確性，但準確性會根據國家/地區和 IP 類型等因素而有所不同。如需 MaxMind 的詳細資訊，請參閱 [MaxMind IP 地理位置](https://support.maxmind.com/hc/en-us/sections/4407519834267-IP-Geolocation)。如果您認為任何 GeoIP 資料不正確，您可以在 [MaxMind Correct GeoIP2 Data](https://support.maxmind.com/hc/en-us/articles/4408252036123-GeoIP-Correction) 向 Maxmind 提交更正請求。

   AWS WAF 使用國際標準化組織 (ISO) 3166 標準中的 alpha-2 國家和區域代碼。您可以在下列位置找到代碼：
   + 在 ISO 網站上，您可以在 [ISO Online Browsing Platform (OBP)](https://www.iso.org/obp/ui#home) 搜尋國家/地區代碼。
   + 在維基百科，國家/地區代碼列於 [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2)。

     國家/地區的區域代碼列於 URL `https://en.wikipedia.org/wiki/ISO_3166-2:<ISO country code>`。例如，美國區域位於 [ISO 3166-2：US](https://en.wikipedia.org/wiki/ISO_3166-2:US)，烏克蘭區域位於 [ISO 3166-2：UA](https://en.wikipedia.org/wiki/ISO_3166-2:UA)。

1. **決定要新增至請求的國家/地區標籤和區域標籤** — 這些標籤指出地理比對陳述式是使用原始 IP 還是轉送 IP 組態。
   + **原始 IP** 

     國家/地區標籤為 `awswaf:clientip:geo:country:<ISO country code>`。美國的範例：`awswaf:clientip:geo:country:US`。

     區域標籤為 `awswaf:clientip:geo:region:<ISO country code>-<ISO region code>`。美國奧勒岡州的範例：`awswaf:clientip:geo:region:US-OR`。
   + **轉送的 IP** 

     國家/地區標籤為 `awswaf:forwardedip:geo:country:<ISO country code>`。美國的範例：`awswaf:forwardedip:geo:country:US`。

     區域標籤為 `awswaf:forwardedip:geo:region:<ISO country code>-<ISO region code>`。美國奧勒岡州的範例：`awswaf:forwardedip:geo:region:US-OR`。

   如果請求指定的 IP 地址無法使用國家/地區或區域代碼，則 AWS WAF 會在 `XX`標籤中使用 來取代 值。例如，下列標籤適用於無法使用國家/地區碼的用戶端 IP：`awswaf:clientip:geo:country:XX`而下列標籤適用於轉送 IP，其國家/地區為美國，但其區域碼無法使用：`awswaf:forwardedip:geo:region:US-XX`。

1. **根據規則條件評估請求的國家/地區代碼** 

地理比對陳述式會將國家和區域標籤新增至其檢查的所有請求，無論它是否找到相符項目。

**注意**  
AWS WAF 在規則的 Web 請求評估結束時新增任何標籤。因此，您針對地理比對陳述式中的標籤使用的任何標籤比對，都必須在包含地理比對陳述式的規則以外的個別規則中定義。

如果您只想要檢查區域值，則可以使用 Count動作和單一國家/地區代碼比對來撰寫地理比對規則，然後撰寫區域標籤的標籤比對規則。您必須提供地理比對規則的國家/地區代碼來評估，即使是此方法也是如此。您可以指定不太可能成為網站流量來源的國家/地區，以減少記錄和計數指標。

## CloudFront 分佈和 CloudFront 地理限制功能
<a name="cloudfront-distributions-geo-restriction"></a>

對於 CloudFront 分佈，如果您使用 CloudFront 地理限制功能，請注意該功能不會轉送封鎖的請求 AWS WAF。它會將允許的請求轉送至 AWS WAF。如果您想要根據地理位置加上您可以在其中指定的其他條件來封鎖請求 AWS WAF，請使用 AWS WAF 地理比對陳述式，請勿使用 CloudFront 地理限制功能。

## 規則陳述式特性
<a name="geo-match-statement-characteristics"></a>

**可巢狀** – 您可以巢狀此陳述式類型。

**WCUs ** – 1 個 WCU。

**設定** – 此陳述式使用以下設定：
+ **國家/地區代碼** – 要比較地理比對的國家/地區代碼陣列。這些必須是來自 ISO 3166 國際標準 alpha-2 國家 ISO 代碼的兩個字元國家/地區代碼，例如 `["US","CN"]`。
+ **（選用） 轉送 IP 組態** – 根據預設， AWS WAF 會使用 Web 請求原始伺服器中的 IP 地址來判斷原始國家/地區。或者，您可以將規則設定為在 HTTP 標頭中使用轉送的 IP，例如 `X-Forwarded-For` 。 AWS WAF 會使用標頭中的第一個 IP 地址。使用此組態，您也可以指定後援行為，以套用至標頭中 IP 地址格式不正確的 Web 請求。備用行為會將請求的相符結果設定為相符或不相符。如需詳細資訊，請參閱[使用轉送的 IP 地址](waf-rule-statement-forwarded-ip-address.md)。

## 尋找此規則陳述式的位置
<a name="geo-match-statement-where-to-find"></a>
+ 主控台上的**規則建置器** – 針對**請求選項**，選擇**來自所在國家/地區的原始伺服器**。
+ **API** – [GeoMatchStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_GeoMatchStatement.html)

## 範例
<a name="waf-rule-statement-geo-examples"></a>

您可以使用地理比對陳述式來管理來自特定國家或地區的請求。例如，如果您想要封鎖來自某些國家/地區的請求，但仍允許來自這些國家/地區的一組特定 IP 地址的請求，您可以建立將 動作設為 的規則，Block並建立下列巢狀陳述式，如虛擬程式碼所示：
+ AND 陳述式
  + 列出您要封鎖的國家/地區的地理比對陳述式
  + NOT 陳述式 
    + IP 集合陳述式，指定您要允許通過的 IP 地址

或者，如果您想要封鎖某些國家/地區的某些區域，但仍允許來自這些國家/地區的其他區域的請求，您可以先定義地理比對規則，並將 動作設為 Count。然後，定義符合新增地理比對標籤的標籤比對規則，並視需要處理請求。

下列虛擬程式碼說明此方法的範例：

1. Geo 比對陳述式列出具有您要封鎖之區域的國家/地區，但動作設為 Count。無論相符狀態為何，這都會標記每個 Web 請求，也可讓您計算感興趣的國家/地區的指標。

1. `AND` 具有封鎖動作的 陳述式
   + 標籤比對陳述式，指定您要封鎖之國家/地區的標籤
   + `NOT` 陳述式 
     + 標籤比對陳述式，指定您要允許透過哪些國家/地區的區域標籤

下列 JSON 清單顯示先前虛擬程式碼中所述的兩個規則的實作。這些規則會封鎖來自美國的所有流量，但來自奧勒岡州和華盛頓州的流量除外。地理比對陳述式會將國家和區域標籤新增至其檢查的所有請求。標籤比對規則會在地理比對規則之後執行，因此可以比對地理比對規則剛新增的國家和區域標籤。地理比對陳述式使用轉送 IP 地址，因此標籤比對也會指定轉送 IP 標籤。

```
{
   "Name": "geoMatchForLabels",
   "Priority": 10,
   "Statement": {
     "GeoMatchStatement": {
       "CountryCodes": [
         "US"
       ],
       "ForwardedIPConfig": {
           "HeaderName": "X-Forwarded-For",
           "FallbackBehavior": "MATCH"
       }
     }
   },
   "Action": {
     "Count": {}
   },
   "VisibilityConfig": {
     "SampledRequestsEnabled": true,
     "CloudWatchMetricsEnabled": true,
     "MetricName": "geoMatchForLabels"
   }
},
{
   "Name": "blockUSButNotOROrWA",
   "Priority": 11,
   "Statement": {
     "AndStatement": {
       "Statements": [
         {
           "LabelMatchStatement": {
             "Scope": "LABEL",
             "Key": "awswaf:forwardedip:geo:country:US"
           }
         },
         {
           "NotStatement": {
             "Statement": {
                "OrStatement": {
                  "Statements": [
                    {
                       "LabelMatchStatement": {
                         "Scope": "LABEL",
                         "Key": "awswaf:forwardedip:geo:region:US-OR"
                       }
                    },
                    {
                       "LabelMatchStatement": {
                         "Scope": "LABEL",
                         "Key": "awswaf:forwardedip:geo:region:US-WA"
                       }
                    }
                 ]
               }
             }
           }
         }
       ]
     }
   },
   "Action": {
     "Block": {}
   },
   "VisibilityConfig": {
     "SampledRequestsEnabled": true,
     "CloudWatchMetricsEnabled": true,
     "MetricName": "blockUSButNotOROrWA"
   }
}
```

另一個範例是，您可以將地理比對與以速率為基礎的規則結合，為特定國家或地區的使用者排定資源的優先順序。您可以為用於區分使用者的每個地理比對或標籤比對陳述式建立不同的速率型陳述式。為偏好的國家或地區的使用者設定較高的速率限制，並為其他使用者設定較低的速率限制。

下列 JSON 清單顯示地理比對規則，後面接著速率型規則，以限制來自美國的流量速率。這些規則允許來自奧勒岡州的流量以比來自國家/地區其他任何地方的流量更高的速率傳入。

```
{
  "Name": "geoMatchForLabels",
  "Priority": 190,
  "Statement": {
    "GeoMatchStatement": {
      "CountryCodes": [
        "US"
      ]
    }
  },
  "Action": {
    "Count": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "geoMatchForLabels"
  }
},
{
  "Name": "rateLimitOregon",
  "Priority": 195,
  "Statement": {
    "RateBasedStatement": {
      "Limit": 3000,
      "AggregateKeyType": "IP",
      "ScopeDownStatement": {
        "LabelMatchStatement": {
          "Scope": "LABEL",
          "Key": "awswaf:clientip:geo:region:US-OR"
        }
      }
    }
  },
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "rateLimitOregon"
  }
},
{
  "Name": "rateLimitUSNotOR",
  "Priority": 200,
  "Statement": {
    "RateBasedStatement": {
      "Limit": 100,
      "AggregateKeyType": "IP",
      "ScopeDownStatement": {
        "AndStatement": {
          "Statements": [
            {
              "LabelMatchStatement": {
                "Scope": "LABEL",
                "Key": "awswaf:clientip:geo:country:US"
              }
            },
            {
              "NotStatement": {
                "Statement": {
                  "LabelMatchStatement": {
                    "Scope": "LABEL",
                    "Key": "awswaf:clientip:geo:region:US-OR"
                  }
                }
              }
            }
          ]
        }
      }
    }
  },
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "rateLimitUSNotOR"
  }
}
```

# IP 集合比對規則陳述式
<a name="waf-rule-statement-type-ipset-match"></a>

本節說明什麼是 IP 集比對陳述式及其運作方式。

IP 集合比對陳述式會根據一組 IP 地址和地址範圍來檢查 Web 請求的 IP 地址。使用此選項以根據請求源自的 IP 地址來允許或封鎖 Web 請求。根據預設， AWS WAF 會使用來自 Web 請求原始伺服器的 IP 地址，但您可以`X-Forwarded-For`改為將規則設定為使用 HTTP 標頭。



AWS WAF 支援除 以外的所有 IPv4 和 IPv6 CIDR 範圍`/0`。如需 CIDR 符號表示法的詳細資訊，請參閱 Wikipedia 項目[無類別域間路由](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)。一個 IP 集合最多可容納 10,000 個 IP 地址或 IP 地址範圍進行檢查。

**注意**  
每個 IP 集合比對規則都會參考一個 IP 集合，您可以獨立於規則而建立和維護。您可以在多個規則中使用單一 IP 集，當您更新參考集時， AWS WAF 會自動更新所有參考規則。  
如需建立和管理 IP 集的資訊，請參閱 [在 中建立和管理 IP 集 AWS WAF](waf-ip-set-managing.md)。

當您在規則群組或保護套件 (Web ACL) 中新增或更新規則時，請選擇選項 **IP 集**，然後選取您要使用的 IP 集名稱。

## 規則陳述式特性
<a name="ipset-match-characteristics"></a>

**可巢**狀 – 您可以巢狀此陳述式類型。

**WCUs** – 大多數 1 個 WCU。如果您將陳述式設定為使用轉送 IP 地址並指定 的位置ANY，請將 WCU 用量增加 4。

此陳述式使用以下設定：
+ **IP 集規格** – 從清單中選擇您要使用的 IP 集，或建立新的 IP 集。
+ **（選用） 轉送 IP 組態** – 替代轉送 IP 標頭名稱，用於取代請求原始伺服器。您可以指定要比對標頭中的第一個、最後一個或任何地址。您也可以指定後援行為，以套用至指定標頭中 IP 地址格式不正確的 Web 請求。備用行為會將請求的相符結果設定為相符或不相符。如需詳細資訊，請參閱[使用轉送的 IP 地址](waf-rule-statement-forwarded-ip-address.md)。

## 尋找此規則陳述式的位置
<a name="ipset-match-where-to-find"></a>

**尋找此規則陳述式的位置**
+ 主控台上的**規則建置器** – 針對**請求選項**，選擇**來自 IP 地址的來源**。
+ 在主控台上**新增我自己的規則和規則群組**頁面 – 選擇 **IP 集**選項。
+ **API** – [IPSetReferenceStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_IPSetReferenceStatement.html)

# 自治系統編號 (ASN) 比對規則陳述式
<a name="waf-rule-statement-type-asn-match"></a>

中的 ASN 比對規則陳述式 AWS WAF 可讓您根據與請求 IP 地址相關聯的自治系統編號 (ASN) 來檢查 Web 流量。ASNs是指派給大型網際網路網路的唯一識別符，由網際網路服務供應商、企業、大學或政府機構等組織管理。透過使用 ASN 比對陳述式，您可以允許或封鎖來自特定網路組織的流量，而無需管理個別 IP 地址。相較於以 IP 為基礎的規則，此方法提供更穩定且更有效率的方法來控制存取，因為 ASNs變更的頻率低於 IP 範圍。

ASN 比對特別適用於封鎖來自已知有問題網路的流量，或僅允許來自信任合作夥伴網路的存取等案例。ASN 比對陳述式提供透過選用的轉送 IP 組態來判斷用戶端 IP 地址的彈性，使其與各種網路設定相容，包括使用內容交付網路 (CDNs) 或反向代理的網路設定。

**注意**  
ASN 比對補充，但不取代標準身分驗證和授權控制。我們建議您實作身分驗證和授權機制，例如 IAM，以驗證應用程式中所有請求的身分。

## ASN 比對陳述式的運作方式
<a name="waf-rule-statement-type-asn-match-how-it-works"></a>

AWS WAF 根據請求的 IP 地址決定請求的 ASN。根據預設， AWS WAF 會使用 Web 請求原始伺服器的 IP 地址。您可以透過在規則陳述式設定中啟用轉送的 IP 組態`X-Forwarded-For`， AWS WAF 將 設定為使用來自替代請求標頭的 IP 地址，例如 。

ASN 比對陳述式會將請求的 ASN 與規則中指定的 ASNs 清單進行比較。如果 ASN 符合清單中的 ASN，則陳述式會評估為 true，並套用相關聯的規則動作。

### 處理未映射ASNs
<a name="waf-rule-statement-type-asn-match-unmapped"></a>

如果 AWS WAF 無法判斷有效 IP 地址的 ASN，則會指派 ASN 0。您可以在規則中包含 ASN 0，以明確地處理這些案例。

### 無效的 IP 地址的備用行為
<a name="waf-rule-statement-type-asn-match-fallback"></a>

當您將 ASN 比對陳述式設定為使用轉送的 IP 地址時，您可以為指定標頭中 IP 地址無效或遺失的請求指定*相符*或*不相符*的備用行為。

## 規則陳述式特性
<a name="waf-rule-statement-type-asn-match-characteristics"></a>

**可巢**狀 – 您可以巢狀化此陳述式類型。

**WCUs** – 1 個 WCU

此陳述式使用以下設定：
+ **ASN 清單** – 要比較 ASN 比對的 ASN 編號陣列。有效值的範圍從 0 到 4294967295。您可以為每個規則指定最多 100 ASNs。
+ **（選用） 轉送 IP 組態** – 預設 AWS WAF 會使用 Web 請求原始伺服器中的 IP 地址來判斷 ASN。或者，您可以改為將規則設定為在 HTTP 標頭中使用轉送的 IP`X-Forwarded-For`。您可以指定是否使用 標頭中的第一個、最後一個或任何地址。使用此組態，您也可以指定後援行為，以套用至標頭中 IP 地址格式不正確的 Web 請求。備用行為會將請求的相符結果設定為相符或不相符。如需詳細資訊，請參閱[使用轉送的 IP 地址](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-forwarded-ip-address.html)。

## 尋找此規則陳述式的位置
<a name="waf-rule-statement-type-asn-match-where-to-find"></a>
+ 主控台上的**規則建置器** – 針對**請求選項**，選擇**來自 ASN 的原始伺服器**。
+ **API** – [AsnMatchStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_AsnMatchStatement.html)

## 範例
<a name="waf-rule-statement-type-asn-match-examples"></a>

此範例會封鎖源自 `X-Forwarded-For`標頭之兩個特定 ASNs 的請求。如果標頭中的 IP 地址格式不正確，則設定的備用行為為 `NO_MATCH`。

```
{
  "Action": {
    "Block": {}
  },
  "Name": "AsnMatchStatementRule",
  "Priority": 1,
  "Statement": {
    "AsnMatchStatement": {
      "AsnList": [64496, 64500]
    },
    "ForwardedIPConfig": {
      "FallbackBehavior": "NO_MATCH",
      "HeaderName": "X-Forwarded-For"
    }
  },
  "VisibilityConfig": {
    "CloudWatchMetricsEnabled": true,
    "MetricName": "AsnMatchRuleMetrics",
    "SampledRequestsEnabled": true
  }
},
"VisibilityConfig": {
  "CloudWatchMetricsEnabled": true,
  "MetricName": "WebAclMetrics",
  "SampledRequestsEnabled": true
}
}
```

# 標籤比對規則陳述式
<a name="waf-rule-statement-type-label-match"></a>

本節說明什麼是標籤比對陳述式及其運作方式。

標籤比對陳述式會根據字串規格檢查 Web 請求上的標籤。可供規則檢查使用的標籤是已由相同保護套件 (Web ACL) 評估中的其他規則新增至 Web 請求的標籤。

標籤不會保留在保護套件 (Web ACL) 評估之外，但您可以在 CloudWatch 中存取標籤指標，而且您可以在主控台中 AWS WAF 查看任何保護套件 (Web ACL) 的標籤資訊摘要。如需詳細資訊，請參閱[標籤指標和維度](waf-metrics.md#waf-metrics-label)及[監控和調校您的 AWS WAF 保護](web-acl-testing-activities.md)。您也可以在日誌中看到標籤。如需相關資訊，請參閱[保護套件 (Web ACL) 流量的日誌欄位](logging-fields.md)。

**注意**  
標籤比對陳述式只能查看先前在保護套件 (Web ACL) 中評估之規則的標籤。如需有關 如何 AWS WAF 評估保護套件 (Web ACL) 中的規則和規則群組的資訊，請參閱 [設定規則優先順序](web-acl-processing-order.md)。

如需新增和比對標籤的詳細資訊，請參閱 [中的 Web 請求標籤 AWS WAF](waf-labels.md)。

## 規則陳述式特性
<a name="label-match-characteristics"></a>

**可巢狀** – 您可以巢狀化此陳述式類型。

**WCUs** – 1 個 WCU

此陳述式使用以下設定：
+ **比對範圍** – 將此設定為**標籤**以比對標籤名稱，並選擇性地比對先前的命名空間和字首。將此設定為**命名空間**，以符合部分或全部的命名空間規格，以及選擇性的前綴。
+ **金鑰** – 您要比對的字串。如果您指定命名空間比對範圍，這應該只指定命名空間和選用的字首，加上結尾冒號。如果您指定標籤比對範圍，這必須包含標籤名稱，也可以選擇性地包含前面的命名空間和字首。

如需這些設定的詳細資訊，請參閱 [AWS WAF 符合標籤的規則](waf-rule-label-match.md) 和 [AWS WAF 標籤比對範例](waf-rule-label-match-examples.md)。

## 尋找此規則陳述式的位置
<a name="label-match-where-to-find"></a>
+ 主控台上的**規則建置器** – 針對**請求選項**，選擇**有標籤**。
+ **API** – [LabelMatchStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_LabelMatchStatement.html)

# Regex 比對規則陳述式
<a name="waf-rule-statement-type-regex-match"></a>

本節說明什麼是 regex 比對陳述式及其運作方式。

regex 比對陳述式會指示 AWS WAF 將請求元件與單一規則表達式 (regex) 比對。如果請求元件與您指定的 regex 相符，Web 請求就會符合 陳述式。

對於您想要使用數學邏輯結合相符條件的情況[規則運算式模式集比對規則陳述式](waf-rule-statement-type-regex-pattern-set-match.md)，此陳述式類型是 的理想替代方案。例如，如果您希望請求元件與某些規則運算式模式相符，並且不與其他規則運算式相符，您可以使用 [AND 規則陳述式](waf-rule-statement-type-and.md)和 結合規則運算式相符陳述式[NOT 規則陳述式](waf-rule-statement-type-not.md)。

AWS WAF 支援 PCRE 程式庫使用的模式語法`libpcre`，但有一些例外。程式庫記錄在 [PCRE - Perl 相容規則表達式](http://www.pcre.org/)中。如需 AWS WAF 支援的相關資訊，請參閱 [中支援的規則表達式語法 AWS WAF](waf-regex-pattern-support.md)。

## 規則陳述式特性
<a name="regex-match-characteristics"></a>

**可巢狀** – 您可以巢狀化此陳述式類型。

**WCUs** – 3 WCUs，作為基本成本。如果您使用請求元件 **所有查詢參數**，請新增 10 WCUs。如果您使用請求元件 **JSON 內文**，請將基本成本 WCUs加倍。針對您套用的每個**文字轉換**，新增 10 WCUs。

此陳述式類型在 Web 請求元件上運作，且需要下列請求元件設定：
+ **請求元件** – 要檢查的 Web 請求部分，例如查詢字串或內文。
**警告**  
如果您檢查請求元件**內**文、**JSON 內文**、**標頭**或 **Cookie**，請閱讀有關 AWS WAF 可檢查多少內容的限制[在 中過大 Web 請求元件 AWS WAF](waf-oversize-request-components.md)。

  如需 Web 請求元件的詳細資訊，請參閱 [在 中調整規則陳述式設定 AWS WAF](waf-rule-statement-fields.md)。
+ **選用文字轉換** – AWS WAF 您想要在檢查請求元件之前對請求元件執行的轉換。例如，您可以將 轉換為小寫或標準化空格。如果您指定多個轉換， 會依列出的順序 AWS WAF 處理它們。如需相關資訊，請參閱[在 中使用文字轉換 AWS WAF](waf-rule-statement-transformation.md)。

## 尋找此規則陳述式的位置
<a name="regex-match-where-to-find"></a>
+ 主控台上的**規則建置器** – 針對**相符類型**，選擇**相符規則表達**式。
+ **API** – [RegexMatchStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_RegexMatchStatement.html)

# 規則運算式模式集比對規則陳述式
<a name="waf-rule-statement-type-regex-pattern-set-match"></a>

本節說明什麼是 regex 模式集比對陳述式及其運作方式。

規則表達式模式集比對會檢查您在規則表達式模式集內為規則表達式模式指定的 Web 請求部分。

AWS WAF 支援 PCRE 程式庫使用的模式語法`libpcre`，但有一些例外。程式庫記錄在 [PCRE - Perl 相容規則表達式](http://www.pcre.org/)中。如需 AWS WAF 支援的相關資訊，請參閱 [中支援的規則表達式語法 AWS WAF](waf-regex-pattern-support.md)。

**注意**  
每個規則運算式模式集比對規則都會參考一個規則運算式模式集，您可以獨立於規則而建立和維護。您可以在多個規則中使用單一規則運算式模式集，當您更新參考集時， AWS WAF 會自動更新所有參考規則集。  
如需建立和管理規則運算式模式集的相關資訊，請參閱 [在 中建立和管理 regex 模式集 AWS WAF](waf-regex-pattern-set-managing.md)。

regex 模式集比對陳述式 AWS WAF 會指示 搜尋您選擇的請求元件內集合中的任何模式。如果請求元件符合集合中的任何模式，則 Web 請求將比對模式集規則陳述式。

如果您想要使用邏輯合併 regex 模式比對，例如，要比對某些規則表達式，而不是比對其他表達式，請考慮使用 [Regex 比對規則陳述式](waf-rule-statement-type-regex-match.md)。

## 規則陳述式特性
<a name="regex-pattern-set-match-characteristics"></a>

**可巢狀** – 您可以巢狀化此陳述式類型。

**WCUs** – 25 WCUs，作為基本成本。如果您使用請求元件 **所有查詢參數**，請新增 10 WCUs。如果您使用請求元件 **JSON 內文**，請將基本成本 WCUs加倍。針對您套用的每個**文字轉換**，新增 10 WCUs。

此陳述式類型在 Web 請求元件上運作，且需要下列請求元件設定：
+ **請求元件** – 要檢查的 Web 請求部分，例如查詢字串或內文。
**警告**  
如果您檢查請求元件**內**文、**JSON 內文**、**標頭**或 **Cookie**，請閱讀有關 AWS WAF 可檢查多少內容的限制[在 中過大 Web 請求元件 AWS WAF](waf-oversize-request-components.md)。

  如需 Web 請求元件的詳細資訊，請參閱 [在 中調整規則陳述式設定 AWS WAF](waf-rule-statement-fields.md)。
+ **選用文字轉換** – AWS WAF 您想要在檢查請求元件之前對請求元件執行的轉換。例如，您可以將 轉換為小寫或標準化空格。如果您指定多個轉換， 會依列出的順序 AWS WAF 處理它們。如需相關資訊，請參閱[在 中使用文字轉換 AWS WAF](waf-rule-statement-transformation.md)。

此陳述式需要下列設定：
+ Regex 模式集規格 – 從清單中選擇您要使用的 regex 模式集，或建立新的模式集。

## 尋找此規則陳述式的位置
<a name="regex-pattern-set-match-where-to-find"></a>
+ 主控台上的**規則建置器** – 針對**相符類型**，從規則表達式集中選擇**字串相符條件** > 相符模式。 ****
+ **API** – [RegexPatternSetReferenceStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_RegexPatternSetReferenceStatement.html)

# 大小約束規則陳述式
<a name="waf-rule-statement-type-size-constraint-match"></a>

本節說明什麼是大小限制陳述式及其運作方式。

大小限制陳述式會將 Web 請求元件 AWS WAF 接收的位元組數目與您提供的數目進行比較，並根據您的比較條件進行比對。

比較條件是大於 (＞) 或小於 (＜) 的運算子。例如，您可以比對大小大於 100 個位元組的查詢字串請求。

如果您檢查 URI 路徑，路徑`/`中的任何 都會計為一個字元。例如，URI 路徑長度`/logo.jpg`為九個字元。

**注意**  
此陳述式只會檢查 Web 請求元件的大小。它不會檢查元件的內容。

## 規則陳述式特性
<a name="size-constraint-match-characteristics"></a>

**可巢狀** – 您可以巢狀化此陳述式類型。

**WCUs** – 1 個 WCU，作為基本成本。如果您使用請求元件 **所有查詢參數**，請新增 10 WCUs。如果您使用請求元件 **JSON 內文**，請將基本成本 WCUs加倍。針對您套用的每個**文字轉換**，新增 10 WCUs。

此陳述式類型在 Web 請求元件上運作，且需要下列請求元件設定：
+ **請求元件** – 要檢查的 Web 請求部分，例如查詢字串或內文。如需 Web 請求元件的詳細資訊，請參閱 [在 中調整規則陳述式設定 AWS WAF](waf-rule-statement-fields.md)。

  套用任何轉換後，大小限制陳述式只會檢查元件的大小。它不會檢查元件的內容。
+ **選用文字轉換** – 在檢查其大小之前 AWS WAF ，您想要在請求元件上執行的轉換。例如，您可以壓縮空格或解碼 HTML 實體。如果您指定多個轉換， 會依列出的順序 AWS WAF 處理它們。如需相關資訊，請參閱[在 中使用文字轉換 AWS WAF](waf-rule-statement-transformation.md)。

此外，此陳述式需要下列設定：
+ **大小比對條件** – 這表示用來比較您提供的大小與您所選請求元件的數值比較運算子。從清單中選擇運算子。
+ **大小** – 要在比較中使用的大小設定，以位元組為單位。

## 尋找此規則陳述式的位置
<a name="size-constraint-match-where-to-find"></a>
+ 主控台上的**規則建置器** – 針對**相符類型**，在**大小相符條件**下，選擇您要使用的條件。
+ **API** – [SizeConstraintStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_SizeConstraintStatement.html)

# SQL Injection 攻擊規則陳述式
<a name="waf-rule-statement-type-sqli-match"></a>

本節說明什麼是 SQL Injection 規則陳述式及其運作方式。

SQL Injection 規則陳述式會檢查是否有惡意 SQL 程式碼。攻擊者會將惡意 SQL 程式碼插入 Web 請求，以執行修改資料庫或從中擷取資料等動作。

## 規則陳述式特性
<a name="sqli-match-characteristics"></a>

**可巢狀** – 您可以巢狀化此陳述式類型。

**WCUs** – 基本成本取決於規則陳述式的敏感度等級設定：Low成本 20，High成本 30。

如果您使用請求元件 **所有查詢參數**，請新增 10 WCUs。如果您使用請求元件 **JSON 內文**，請將基本成本 WCUs加倍。針對您套用的每個**文字轉換**，新增 10 WCUs。

此陳述式類型在 Web 請求元件上運作，且需要下列請求元件設定：
+ **請求元件** – 要檢查的 Web 請求部分，例如查詢字串或內文。
**警告**  
如果您檢查請求元件**內**文、**JSON 內文**、**標頭**或 **Cookie**，請閱讀有關 AWS WAF 可檢查多少內容的限制[在 中過大 Web 請求元件 AWS WAF](waf-oversize-request-components.md)。

  如需 Web 請求元件的詳細資訊，請參閱 [在 中調整規則陳述式設定 AWS WAF](waf-rule-statement-fields.md)。
+ **選用文字轉換** – AWS WAF 您想要在檢查請求元件之前對請求元件執行的轉換。例如，您可以將 轉換為小寫或標準化空格。如果您指定多個轉換， 會依列出的順序 AWS WAF 處理它們。如需相關資訊，請參閱[在 中使用文字轉換 AWS WAF](waf-rule-statement-transformation.md)。

此外，此陳述式需要下列設定：
+ **敏感度層級** – 此設定會調整 SQL Injection 比對條件的敏感度。選項包括 LOW 和 HIGH. 預設設定為 LOW。

  HIGH 設定會偵測更多 SQL Injection 攻擊，而 是建議設定。由於敏感度較高，此設定會產生更多誤報，特別是當您的 Web 請求通常包含不尋常的字串時。在保護套件 (Web ACL) 測試和調校期間，您可能需要執行更多工作來緩解誤報。如需相關資訊，請參閱[測試和調校您的 AWS WAF 保護](web-acl-testing.md)。

  較低的設定提供較不嚴格的 SQL 注入偵測，這也會導致較少的誤報。 對於具有其他 SQL 注入攻擊保護或容錯能力較低的資源， LOW 可能是更好的選擇。

## 尋找此規則陳述式的位置
<a name="sqli-match-where-to-find"></a>
+ 主控台上的**規則建置器** – 針對**相符類型**，選擇**攻擊比對條件** > **包含 SQL 注入攻擊**。
+ **API** – [SqliMatchStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_SqliMatchStatement.html)

# 字串比對規則陳述式
<a name="waf-rule-statement-type-string-match"></a>

本節說明什麼是字串比對陳述式及其運作方式。

字串比對陳述式指出您想要在請求中 AWS WAF 搜尋的字串、在請求中要搜尋的位置，以及如何搜尋。例如，您可以在請求中任何查詢字串的開頭尋找特定字串，或是在請求的 `User-agent` 標頭中尋找完全相符項目。通常，字串包含可列印 ASCII 字元，但您可以使用十六進位 0x00 到 0xFF 的任何字元 (小數 0 到 255)。

## 規則陳述式特性
<a name="string-match-characteristics"></a>

**可巢狀** – 您可以巢狀化此陳述式類型。

**WCUs** – 基本成本取決於您使用的配對類型。
+ **完全符合字串** – 2 
+ **開頭為字串** – 2 
+ **結尾為字串** – 2 
+ **包含字串** – 10 
+ **包含單字** – 10 

如果您使用請求元件 **所有查詢參數**，請新增 10 WCUs。如果您使用請求元件 **JSON 內文**，請將基本成本 WCUs加倍。針對您套用的每個**文字轉換**，新增 10 WCUs。

此陳述式類型在 Web 請求元件上運作，且需要下列請求元件設定：
+ **請求元件** – 要檢查的 Web 請求部分，例如查詢字串或內文。
**警告**  
如果您檢查請求元件**內**文、**JSON 內文**、**標頭**或 **Cookie**，請閱讀有關 AWS WAF 可檢查多少內容的限制[在 中過大 Web 請求元件 AWS WAF](waf-oversize-request-components.md)。

  如需 Web 請求元件的詳細資訊，請參閱 [在 中調整規則陳述式設定 AWS WAF](waf-rule-statement-fields.md)。
+ **選用文字轉換** – AWS WAF 您想要在檢查請求元件之前對請求元件執行的轉換。例如，您可以將 轉換為小寫或標準化空格。如果您指定多個轉換， 會依列出的順序 AWS WAF 處理它們。如需相關資訊，請參閱[在 中使用文字轉換 AWS WAF](waf-rule-statement-transformation.md)。

此外，此陳述式需要下列設定：
+ **要比對的字串** – 這是您要與指定請求元件 AWS WAF 比較的字串。通常，字串包含可列印 ASCII 字元，但您可以使用十六進位 0x00 到 0xFF 的任何字元 (小數 0 到 255)。
+ **字串比對條件** – 這表示您要 AWS WAF 執行的搜尋類型。
  + **完全符合字串** – 字串和請求元件的值相同。
  + **以字串開頭** – 字串會出現在請求元件的開頭。
  + **以字串結尾** – 字串會出現在請求元件的結尾。
  + **包含字串** – 字串會出現在請求元件的任何位置。
  + **包含單字** – 您指定的字串必須出現在請求元件中。

    對於此選項，您指定的字串必須只包含英數字元或底線 (A-Z、a-z、0-9 或 \$1)。

    下列其中一項必須為 true，才能比對請求：
    + 該字串與請求元件的數值 (如標頭值) 完全相符。
    + 該字串位於請求元件的開頭，後面加上非英數字元或底線 (\$1) 的字元，例如 `BadBot;`。
    + 該字串位於請求元件的尾端，前面加上非英數字元或底線 (\$1) 的字元，例如 `;BadBot`。
    + 該字串位於請求元件的中間，前後加上非英數字元或底線 (\$1) 的字元，例如 `-BadBot;`。

## 尋找此規則陳述式的位置
<a name="string-match-where-to-find"></a>
+ 主控台上的**規則建置器** – 針對**比對類型**，選擇**字串比對條件**，然後填入您要比對的字串。
+ **API** – [ByteMatchStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_ByteMatchStatement.html)

# 跨網站指令碼攻擊規則陳述式
<a name="waf-rule-statement-type-xss-match"></a>

本節說明什麼是 XSS （跨網站指令碼） 攻擊陳述式及其運作方式。

XSS 攻擊陳述式會檢查 Web 請求元件中是否有惡意指令碼。在 XSS 攻擊中，攻擊者會使用良性網站中的漏洞做為工具，將惡意用戶端網站指令碼注入其他合法的 Web 瀏覽器。

## 規則陳述式特性
<a name="xss-match-characteristics"></a>

**可巢狀** – 您可以巢狀此陳述式類型。

**WCUs** – 40 WCUs，作為基本成本。如果您使用請求元件 **所有查詢參數**，請新增 10 WCUs。如果您使用請求元件 **JSON 內文**，請將基本成本 WCUs加倍。針對您套用的每個**文字轉換**，新增 10 WCUs。

此陳述式類型在 Web 請求元件上運作，且需要下列請求元件設定：
+ **請求元件** – 要檢查的 Web 請求部分，例如查詢字串或內文。
**警告**  
如果您檢查請求元件**內**文、**JSON 內文**、**標頭**或 **Cookie**，請閱讀有關 AWS WAF 可檢查多少內容的限制[在 中過大 Web 請求元件 AWS WAF](waf-oversize-request-components.md)。

  如需 Web 請求元件的詳細資訊，請參閱 [在 中調整規則陳述式設定 AWS WAF](waf-rule-statement-fields.md)。
+ **選用文字轉換** – AWS WAF 您想要在檢查請求元件之前對請求元件執行的轉換。例如，您可以將 轉換為小寫或標準化空格。如果您指定多個轉換， 會依列出的順序 AWS WAF 處理它們。如需相關資訊，請參閱[在 中使用文字轉換 AWS WAF](waf-rule-statement-transformation.md)。

## 尋找此規則陳述式的位置
<a name="xss-match-where-to-find"></a>
+ 主控台上的**規則建置器** – 針對**相符類型**，選擇**攻擊比對條件** > **包含 XSS 注入攻擊**。
+ **API** – [XssMatchStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_XssMatchStatement.html)

# 在 中使用邏輯規則陳述式 AWS WAF
<a name="waf-rule-statements-logical"></a>

本節說明什麼是邏輯規則陳述式及其運作方式。

使用邏輯規則陳述式來合併其他陳述式或否定其結果。每個邏輯規則陳述式至少需要一個巢狀化的陳述式。

若要邏輯合併或否定規則陳述式結果，您可以在邏輯規則陳述式下巢狀化陳述式。

邏輯規則陳述式是可巢狀的。您可以將它們巢狀到其他邏輯規則陳述式中，並在縮小範圍陳述式中使用它們。如需縮小範圍陳述式的資訊，請參閱 [在 中使用縮小範圍陳述式 AWS WAF](waf-rule-scope-down-statements.md)。

**注意**  
主控台上的視覺化編輯器支援一個層級的規則陳述式巢狀，這適用於許多需求。若要巢狀更多關卡，請在主控台上編輯規則的 JSON 表示法，或使用 APIs。

此表格說明邏輯規則陳述式，並提供計算每個 的保護套件 (Web ACL) 容量單位 (WCU) 用量的準則。如需 WCU 的相關資訊，請參閱 [中的 Web ACL 容量單位 WCUs) AWS WAF](aws-waf-capacity-units.md)。


| 邏輯陳述式  | Description | WCU | 
| --- | --- | --- | 
| [AND 邏輯](waf-rule-statement-type-and.md) | 結合巢狀陳述式與AND邏輯。 | 以巢狀化陳述式為基礎 | 
|  [NOT 邏輯](waf-rule-statement-type-not.md)  |  否定巢狀化陳述式的結果。  |  以巢狀化陳述式為基礎  | 
| [OR 邏輯](waf-rule-statement-type-or.md) | 結合巢狀陳述式與OR邏輯。 | 以巢狀化陳述式為基礎 | 

# AND 規則陳述式
<a name="waf-rule-statement-type-and"></a>

AND 規則陳述式結合了巢狀陳述式與邏輯AND操作，因此所有巢狀陳述式都必須相符，AND陳述式才能相符。這至少需要兩個巢狀陳述式。

## 規則陳述式特性
<a name="and-rule-statement-characteristics"></a>

**可巢狀** – 您可以巢狀此陳述式類型。

**WCUs** – 取決於巢狀陳述式。

## 尋找此規則陳述式的位置
<a name="and-rule-statement-where-to-find"></a>
+ 主控台上的**規則建置器** – **如果請求**，請選擇**符合所有陳述式 (AND)**，然後填入巢狀陳述式。
+ **API** – [AndStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_AndStatement.html)

## 範例
<a name="and-rule-statement-examples"></a>

以下清單顯示使用 AND和 NOT 邏輯規則陳述式來消除 SQL Injection 攻擊陳述式相符項目的誤報。在此範例中，假設我們可以撰寫單一位元組比對陳述式，以符合導致誤報的請求。

AND 陳述式會比對不符合位元組比對陳述式且符合 SQL Injection 攻擊陳述式的請求。

```
{
      "Name": "SQLiExcludeFalsePositives",
      "Priority": 0,
      "Statement": {
        "AndStatement": {
          "Statements": [
            {
              "NotStatement": {
                "Statement": {
                  "ByteMatchStatement": {
                    "SearchString": "string identifying a false positive",
                    "FieldToMatch": {
                      "Body": {
                        "OversizeHandling": "MATCH"
                      }
                    },
                    "TextTransformations": [
                      {
                        "Priority": 0,
                        "Type": "NONE"
                      }
                    ],
                    "PositionalConstraint": "CONTAINS"
                  }
                }
              }
            },
            {
              "SqliMatchStatement": {
                "FieldToMatch": {
                  "Body": {
                    "OversizeHandling": "MATCH"
                  }
                },
                "TextTransformations": [
                  {
                    "Priority": 0,
                    "Type": "NONE"
                  }
                ]
              }
            }
          ]
        }
      },
      "Action": {
        "Block": {}
      },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "SQLiExcludeFalsePositives"
      }
    }
```

使用主控台規則視覺化編輯器，您可以在 或 陳述NOT式下巢狀化非邏輯陳述式OR或AND陳述式。NOT 陳述式的巢狀化會顯示在先前的範例中。

使用主控台規則視覺化編輯器，您可以在邏輯規則陳述式下巢狀化最可巢狀的陳述式，例如先前範例中顯示的陳述式。您無法使用視覺化編輯器來巢狀化 OR或 AND陳述式。若要設定此類型的巢狀，您需要以 JSON 提供規則陳述式。例如，下列 JSON 規則清單包含 OR陳述式的巢狀AND陳述式。

```
{
  "Name": "match_rule",
  "Priority": 0,
  "Statement": {
    "AndStatement": {
      "Statements": [
        {
          "LabelMatchStatement": {
            "Scope": "LABEL",
            "Key": "awswaf:managed:aws:bot-control:bot:category:monitoring"
          }
        },
        {
          "NotStatement": {
            "Statement": {
              "LabelMatchStatement": {
                "Scope": "LABEL",
                "Key": "awswaf:managed:aws:bot-control:bot:name:pingdom"
              }
            }
          }
        },
        {
          "OrStatement": {
            "Statements": [
              {
                "GeoMatchStatement": {
                  "CountryCodes": [
                    "JM",
                    "JP"
                  ]
                }
              },
              {
                "ByteMatchStatement": {
                  "SearchString": "JCountryString",
                  "FieldToMatch": {
                    "Body": {}
                  },
                  "TextTransformations": [
                    {
                      "Priority": 0,
                      "Type": "NONE"
                    }
                  ],
                  "PositionalConstraint": "CONTAINS"
                }
              }
            ]
          }
        }
      ]
    }
  },
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "match_rule"
  }
}
```

# NOT 規則陳述式
<a name="waf-rule-statement-type-not"></a>

NOT 規則陳述式在邏輯上否定單一巢狀陳述式的結果，因此巢狀陳述式必須與NOT陳述式不相符，反之亦然。這需要一個巢狀化陳述式。

例如，如果您想要封鎖不是來自特定國家/地區的請求，請建立動作設定為封鎖的NOT陳述式，並巢狀指定國家/地區的地理比對陳述式。

## 規則陳述式特性
<a name="not-rule-statement-characteristics"></a>

**可巢狀** – 您可以巢狀化此陳述式類型。

**WCUs** – 取決於巢狀陳述式。

## 尋找此規則陳述式的位置
<a name="not-rule-statement-where-to-find"></a>
+ 主控台上的**規則建置器** – 對於**如果請求**，請選擇**不符合陳述式 (NOT)**，然後填入巢狀陳述式。
+ **API** – [NotStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_NotStatement.html)

# OR 規則陳述式
<a name="waf-rule-statement-type-or"></a>

OR 規則陳述式結合了巢狀陳述式與OR邏輯，因此其中一個巢狀陳述式必須符合，OR陳述式才能相符。這至少需要兩個巢狀陳述式。

例如，如果您想要封鎖來自特定國家/地區的請求或包含特定查詢字串的請求，您可以建立 OR陳述式，並在其中巢狀化一個國家/地區的地理比對陳述式，以及查詢字串的字串比對陳述式。

如果您想要封鎖*不是*來自特定國家/地區或包含特定查詢字串的請求，您可以修改先前的OR陳述式，將地理比對陳述式巢狀在NOT陳述式內的一個層級。此巢狀層級需要您使用 JSON 格式，因為主控台僅支援一個巢狀層級。

## 規則陳述式特性
<a name="or-rule-statement-characteristics"></a>

**可巢狀** – 您可以巢狀化此陳述式類型。

**WCUs** – 取決於巢狀陳述式。

## 尋找此規則陳述式的位置
<a name="or-rule-statement-where-to-find"></a>
+ 主控台上的**規則建置器** – **如果請求**，請選擇**至少符合其中一個陳述式 (OR)**，然後填入巢狀陳述式。
+ **API** – [OrStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_OrStatement.html)

**範例**  
下列清單顯示使用 OR來結合其他兩個陳述式。如果其中一個巢狀OR陳述式相符，則陳述式為相符。

```
{
  "Name": "neitherOfTwo",
  "Priority": 1,
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "neitherOfTwo"
  },
  "Statement": {
    "OrStatement": {
      "Statements": [
        {
          "GeoMatchStatement": {
            "CountryCodes": [
              "CA"
            ]
          }
        },
        {
          "IPSetReferenceStatement": {
            "ARN": "arn:aws:wafv2:us-east-1:111111111111:regional/ipset/test-ip-set-22222222/33333333-4444-5555-6666-777777777777"
          }
        }
      ]
    }
  }
}
```

使用主控台規則視覺化編輯器，您可以在邏輯規則陳述式下巢狀化最可巢狀的陳述式，但無法使用視覺化編輯器來巢狀化 OR或 AND陳述式。若要設定此類型的巢狀，您需要以 JSON 提供規則陳述式。例如，下列 JSON 規則清單包含 OR陳述式的巢狀AND陳述式。

```
{
  "Name": "match_rule",
  "Priority": 0,
  "Statement": {
    "AndStatement": {
      "Statements": [
        {
          "LabelMatchStatement": {
            "Scope": "LABEL",
            "Key": "awswaf:managed:aws:bot-control:bot:category:monitoring"
          }
        },
        {
          "NotStatement": {
            "Statement": {
              "LabelMatchStatement": {
                "Scope": "LABEL",
                "Key": "awswaf:managed:aws:bot-control:bot:name:pingdom"
              }
            }
          }
        },
        {
          "OrStatement": {
            "Statements": [
              {
                "GeoMatchStatement": {
                  "CountryCodes": [
                    "JM",
                    "JP"
                  ]
                }
              },
              {
                "ByteMatchStatement": {
                  "SearchString": "JCountryString",
                  "FieldToMatch": {
                    "Body": {}
                  },
                  "TextTransformations": [
                    {
                      "Priority": 0,
                      "Type": "NONE"
                    }
                  ],
                  "PositionalConstraint": "CONTAINS"
                }
              }
            ]
          }
        }
      ]
    }
  },
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "match_rule"
  }
}
```

# 在 中使用以速率為基礎的規則陳述式 AWS WAF
<a name="waf-rule-statement-type-rate-based"></a>

本節說明什麼是以速率為基礎的規則陳述式及其運作方式。

以速率為基礎的規則會計算傳入請求，並在速率太快時限制請求。此規則會根據您的條件彙總請求，並根據規則的評估時段、請求限制和動作設定，計數和速率會限制彙總分組。

**注意**  
您也可以使用 Bot Control AWS 受管規則規則群組的目標保護層級來評分限制 Web 請求。使用此受管規則群組會產生額外費用。如需詳細資訊，請參閱[速率型規則和目標機器人控制規則中速率限制的選項](waf-rate-limiting-options.md)。

AWS WAF 會針對您使用的速率型規則的每個執行個體分別追蹤和管理 Web 請求。例如，如果您在兩個 Web ACLs 中提供相同的以速率為基礎的規則設定，則兩個規則陳述式中的每一個都代表以速率為基礎的規則的個別執行個體，並且每個 都會取得自己的追蹤和管理 AWS WAF。如果您在規則群組內定義以速率為基礎的規則，然後在多個位置使用該規則群組，則每次使用都會建立以速率為基礎的規則的個別執行個體，以取得自己的追蹤和管理 AWS WAF。

**不可巢狀化** – 您無法將此陳述式類型巢狀在其他陳述式中。您可以直接將其包含在保護套件 (Web ACL) 或規則群組中。

**縮小範圍陳述式** – 此規則類型可以採用縮小範圍陳述式，以縮小規則追蹤的請求範圍和速率限制。縮小範圍陳述式可以是選用或必要，視您的其他規則組態設定而定。本節涵蓋詳細資訊。如需縮小範圍陳述式的一般資訊，請參閱 [在 中使用縮小範圍陳述式 AWS WAF](waf-rule-scope-down-statements.md)。

**WCUs** – 2，作為基本成本。針對您指定的每個自訂彙總金鑰，新增 30 WCUs。如果您在規則中使用縮小範圍陳述式，請計算並新增該陳述WCUs。

**尋找此規則陳述式的位置**
+ 保護套件中的**規則建置器** (Web ACL)，在主控台上 – 在**規則**下，針對**類型**，選擇以**速率為基礎的規則**。
+ **API** – [RateBasedStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_RateBasedStatement.html)

**Topics**
+ [中的以速率為基礎的規則高階設定 AWS WAF](waf-rule-statement-type-rate-based-high-level-settings.md)
+ [中的以速率為基礎的規則警告 AWS WAF](waf-rule-statement-type-rate-based-caveats.md)
+ [在 中彙總以速率為基礎的規則 AWS WAF](waf-rule-statement-type-rate-based-aggregation-options.md)
+ [以速率為基礎的規則彙總執行個體和計數](waf-rule-statement-type-rate-based-aggregation-instances.md)
+ [將速率限制套用至 中的請求 AWS WAF](waf-rule-statement-type-rate-based-request-limiting.md)
+ [中的以速率為基礎的規則範例 AWS WAF](waf-rule-statement-type-rate-based-examples.md)
+ [列出速率受到以速率為基礎的規則限制的 IP 地址](listing-managed-ips.md)

# 中的以速率為基礎的規則高階設定 AWS WAF
<a name="waf-rule-statement-type-rate-based-high-level-settings"></a>

以速率為基礎的規則陳述式使用以下高階設定：
+ **評估時段** – 應包含在其請求計數中的時間 AWS WAF 量，以秒為單位，從目前時間回顧。例如，對於 120 的設定，當 AWS WAF 檢查速率時，它會計算目前時間前 2 分鐘的請求。有效設定為 60 (1 分鐘）、120 (2 分鐘）、300 (5 分鐘） 和 600 (10 分鐘），預設為 300 (5 分鐘）。

  此設定不會決定檢查 AWS WAF 速率的頻率，但會在每次檢查時回溯多久。 會經常 AWS WAF 檢查速率，時間與評估時段設定無關。
+ **速率限制** – 符合條件的請求數目上限， AWS WAF 應只追蹤指定的評估時段。允許的最低限制設定為 10。違反此限制時， 會將規則動作設定 AWS WAF 套用至符合您條件的其他請求。

  AWS WAF 會在您設定的限制附近套用速率限制，但不保證完全符合限制。如需詳細資訊，請參閱[以速率為基礎的規則警告](waf-rule-statement-type-rate-based-caveats.md)。
+ **請求彙總** – 在以速率為基礎的規則計數和速率限制的 Web 請求上使用的彙總條件。您設定的速率限制會套用至每個彙總執行個體。如需詳細資訊，請參閱 [彙總以速率為基礎的規則](waf-rule-statement-type-rate-based-aggregation-options.md) 和 [彙總執行個體和計數](waf-rule-statement-type-rate-based-aggregation-instances.md)。
+ **動作** – 對規則速率限制的請求採取的動作。您可以使用 以外的任何規則動作Allow。這是照常在規則層級設定，但有一些限制和行為是針對以速率為基礎的規則。如需規則動作的一般資訊，請參閱 [在 中使用規則動作 AWS WAF](waf-rule-action.md)。如需速率限制的特定資訊，請參閱本節[將速率限制套用至 中的請求 AWS WAF](waf-rule-statement-type-rate-based-request-limiting.md)中的 。
+ **檢查範圍和速率限制** – 您可以新增縮小範圍陳述式，縮小以速率為基礎的陳述式追蹤的請求範圍和速率限制。如果您指定縮小範圍陳述式，則規則只會彙總、計數和速率限制符合縮小範圍陳述式的請求。如果您選擇請求彙總選項**全部計數**，則需要縮小範圍陳述式。如需縮小範圍陳述式的詳細資訊，請參閱 [使用縮小範圍陳述式](waf-rule-scope-down-statements.md)。
+ **（選用） 轉送 IP 組態** – 只有當您在請求彙總**的 標頭中指定 IP 地址**時，才會使用此組態，無論是單獨使用或做為自訂金鑰設定的一部分。 AWS WAF 會擷取指定標頭中的第一個 IP 地址，並使用該地址做為彙總值。此用途的常見標頭為 `X-Forwarded-For`，但您可以指定任何標頭。如需詳細資訊，請參閱[使用轉送的 IP 地址](waf-rule-statement-forwarded-ip-address.md)。

# 中的以速率為基礎的規則警告 AWS WAF
<a name="waf-rule-statement-type-rate-based-caveats"></a>

本節列出使用速率型規則的注意事項。

AWS WAF 速率限制旨在控制高請求率，並以最有效率且最有效的方式保護應用程式的可用性。它不適用於精確的請求速率限制。
+ AWS WAF 使用演算法估計目前的請求率，該演算法更重視最近的請求。因此， AWS WAF 會在您設定的限制附近套用速率限制，但不保證完全符合限制。
+ 每次 AWS WAF 預估請求速率時， 都會回 AWS WAF 頭查看在設定的評估時段內傳入的請求數量。由於這一點和傳播延遲等其他因素，在 AWS WAF 偵測和速率限制請求之前，請求可能以太高的速率傳入最多幾分鐘。同樣地，在 偵測到降低並停止速率限制動作之前 AWS WAF ，請求速率可以低於限制一段時間。通常，此延遲低於 30 秒。
+ 如果您在使用中的規則中變更任何速率限制設定，變更會重設規則的速率限制計數。這最多可暫停規則的速率限制活動一分鐘。速率限制設定是評估時段、速率限制、請求彙總設定、轉送 IP 組態和檢查範圍。

# 在 中彙總以速率為基礎的規則 AWS WAF
<a name="waf-rule-statement-type-rate-based-aggregation-options"></a>

本節說明彙總請求的選項。

根據預設，速率型規則會根據請求 IP 地址彙總和速率限制請求。您可以設定規則以使用各種其他彙總金鑰和金鑰組合。例如，您可以根據轉送的 IP 地址、HTTP 方法或查詢引數進行彙總。您也可以指定彙總金鑰組合，例如 IP 地址和 HTTP 方法，或兩個不同 Cookie 的值。

**注意**  
您在彙總金鑰中指定的所有請求元件都必須存在於 Web 請求中，才能評估請求或受到規則限制的速率。

您可以使用下列彙總選項來設定速率型規則。
+ **來源 IP 地址** – 僅使用來自 Web 請求來源的 IP 地址彙總。

  來源 IP 地址可能不包含原始用戶端的地址。如果 Web 請求通過一或多個代理或負載平衡器，這將包含最後一個代理的地址。
+ **標頭中的 IP 地址** – 僅使用 HTTP 標頭中的用戶端地址彙總。這也稱為轉送 IP 地址。

  使用此組態，您也可以指定後援行為，以套用至標頭中 IP 地址格式不正確的 Web 請求。備用行為會將請求的相符結果設定為相符或不相符。對於不匹配，以速率為基礎的規則不計算請求或限制請求的速率。為了進行比對，以速率為基礎的規則會將請求與指定標頭中 IP 地址格式不正確的其他請求分組。

  使用此選項時請小心，因為代理可能會以不一致的方式處理標頭，也可以修改標頭來繞過檢查。如需其他資訊和最佳實務，請參閱 [在 中使用轉送的 IP 地址 AWS WAF](waf-rule-statement-forwarded-ip-address.md)。
+ **ASN** – 使用與來源 IP 地址相關聯的自治系統編號 (ASN) 彙總 做為彙總金鑰。這可能不是原始用戶端的地址。如果 Web 請求經過一或多個代理或負載平衡器，這會包含最後一個代理的地址。

  如果 AWS WAF 無法從 IP 地址衍生 ASN，它會將 ASN 計為 ASN 0。如果您不想將速率限制套用至未映射ASNs，您可以建立排除 ASN 0 請求的縮小範圍規則。
+ **標頭中的 ASN** – 使用與 HTTP 標頭中的用戶端 IP 地址相關聯的 ASN 彙總。這也稱為轉送 IP 地址。使用此組態，您也可以指定後援行為，以套用至 IP 地址無效或格式不正確的 Web 請求。備用行為會將請求的相符結果設定為相符或不相符。如果您在轉送的 IP 組態中將備用行為設定為相符， AWS WAF 會將無效的 IP 地址視為相符值。這可讓 AWS WAF 繼續評估以速率為基礎的規則複合索引鍵的任何剩餘部分。對於不匹配，以速率為基礎的規則不計算請求或限制請求的速率。

  使用此選項時請小心，因為代理可能會以不一致的方式處理標頭，並且可以修改標頭來繞過檢查。如需其他資訊和最佳實務，請參閱 [在 中使用轉送的 IP 地址 AWS WAF](waf-rule-statement-forwarded-ip-address.md)。
+ **全部計數** – 計數和速率會限制符合規則縮小範圍陳述式的所有請求。此選項需要縮小範圍陳述式。這通常用於限制一組特定請求，例如具有特定標籤的所有請求或來自特定地理區域的所有請求。
+ **自訂金鑰** – 使用一或多個自訂彙總金鑰進行彙總。若要將任一 IP 地址選項與其他彙總金鑰合併，請在自訂金鑰下在此處定義它們。

  自訂彙總金鑰是 中所述 Web 請求元件選項的子集[在 中請求元件 AWS WAF](waf-rule-statement-fields-list.md)。

  金鑰選項如下。除非另有說明，否則您可以使用 選項多次，例如兩個標頭或三個標籤命名空間。
  + **標籤命名空間** – 使用標籤命名空間做為彙總索引鍵。每個具有指定標籤命名空間的不同完整標籤名稱都有助於彙總執行個體。如果您只使用一個標籤命名空間做為自訂金鑰，則每個標籤名稱都會完整定義彙總執行個體。

    速率型規則只會使用由保護套件 (Web ACL) 中事先評估的規則新增至請求的標籤。

    如需標籤命名空間和名稱的資訊，請參閱 [中的標籤語法和命名需求 AWS WAF](waf-rule-label-requirements.md)。
  + **標頭** – 使用具名標頭做為彙總金鑰。標頭中的每個不同值都有助於彙總執行個體。

    標頭會進行選用的文字轉換。請參閱 [在 中使用文字轉換 AWS WAF](waf-rule-statement-transformation.md)。
  + **Cookie** – 使用具名 Cookie 做為彙總金鑰。Cookie 中的每個不同值都有助於彙總執行個體。

    Cookie 會進行選用的文字轉換。請參閱 [在 中使用文字轉換 AWS WAF](waf-rule-statement-transformation.md)。
  + **查詢引數** – 在請求中使用單一查詢引數做為彙總索引鍵。具名查詢引數的每個不同值都有助於彙總執行個體。

    查詢引數會進行選用的文字轉換。請參閱 [在 中使用文字轉換 AWS WAF](waf-rule-statement-transformation.md)。
  + **查詢字串** – 使用請求中的整個查詢字串做為彙總索引鍵。每個不同的查詢字串都有助於彙總執行個體。您可以使用此金鑰類型一次。

    查詢字串會進行選用的文字轉換。請參閱 [在 中使用文字轉換 AWS WAF](waf-rule-statement-transformation.md)。
  + **URI 路徑** – 使用請求中的 URI 路徑做為彙總索引鍵。每個不同的 URI 路徑都有助於彙總執行個體。您可以使用此金鑰類型一次。

    URI 路徑會進行選用的文字轉換。請參閱 [在 中使用文字轉換 AWS WAF](waf-rule-statement-transformation.md)。
  + **JA3 指紋** – 使用請求中的 JA3 指紋做為彙總金鑰。每個不同的 JA3 指紋都有助於彙總執行個體。您可以使用此金鑰類型一次。
  + **JA4 指紋** – 使用請求中的 JA4 指紋做為彙總金鑰。每個不同的 JA4 指紋都有助於彙總執行個體。您可以使用此金鑰類型一次。
  + **HTTP 方法** – 使用請求的 HTTP 方法做為彙總金鑰。每個不同的 HTTP 方法都有助於彙總執行個體。您可以使用此金鑰類型一次。
  + **IP 地址** – 使用來自 Web 請求原始伺服器的 IP 地址結合其他金鑰進行彙總。

    這可能不會包含原始用戶端的地址。如果 Web 請求通過一或多個代理或負載平衡器，這將包含最後一個代理的地址。
  + **標頭中的 IP 地址** – 使用 HTTP 標頭中的用戶端地址搭配其他金鑰進行彙總。這也稱為轉送 IP 地址。

    使用此選項時請小心，因為代理可能會以不一致的方式處理標頭，並且可以修改標頭來繞過檢查。如需其他資訊和最佳實務，請參閱 [在 中使用轉送的 IP 地址 AWS WAF](waf-rule-statement-forwarded-ip-address.md)。

# 以速率為基礎的規則彙總執行個體和計數
<a name="waf-rule-statement-type-rate-based-aggregation-instances"></a>

本節說明以速率為基礎的規則如何評估 Web 請求。

當以速率為基礎的規則使用您的彙總條件評估 Web 請求時，規則為指定彙總金鑰尋找的每個唯一值集會定義唯一的*彙總執行個體*。
+ **多個索引鍵** – 如果您已定義多個自訂索引鍵，則每個索引鍵的值都有助於彙總執行個體定義。值的每個唯一組合都會定義彙總執行個體。
+ **單一金鑰** – 如果您已在自訂金鑰或選取其中一個單一 IP 地址選項中選擇單一金鑰，則金鑰的每個唯一值都會定義彙總執行個體。
+ **全部計數 - 無索引鍵** – 如果您已選取彙總選項**全部計數**，則規則評估的所有請求都屬於規則的單一彙總執行個體。此選項需要縮小範圍陳述式。

 

速率型規則會針對其識別的每個彙總執行個體分別計算 Web 請求。

例如，假設以速率為基礎的規則評估具有下列 IP 地址和 HTTP 方法值的 Web 請求：
+ IP 地址 10.1.1.1、HTTP 方法 POST
+ IP 地址 10.1.1.1，HTTP 方法 GET
+ IP 地址 127.0.0.0，HTTP 方法 POST
+ IP 地址 10.1.1.1，HTTP 方法 GET

規則會根據您的彙總條件建立不同的彙總執行個體。
+ 如果彙總條件只是 IP 地址，則每個個別 IP 地址都是彙總執行個體，並分別 AWS WAF 計算每個 IP 地址的請求。我們範例的彙總執行個體和請求計數如下：
  + IP 地址 10.1.1.1：計數 3
  + IP 地址 127.0.0.0：計數 1
+ 如果彙總條件是 HTTP 方法，則每個個別 HTTP 方法都是彙總執行個體。我們範例的彙總執行個體和請求計數如下：
  + HTTP 方法 POST：計數 2
  + HTTP 方法 GET：計數 2
+ 如果彙總條件是 IP 地址和 HTTP 方法，則每個 IP 地址和每個 HTTP 方法都有助於合併彙總執行個體。我們範例的彙總執行個體和請求計數如下：
  + IP 地址 10.1.1.1，HTTP 方法 POST：計數 1
  + IP 地址 10.1.1.1，HTTP 方法 GET：計數 2
  + IP 地址 127.0.0.0，HTTP 方法 POST：計數 1

# 將速率限制套用至 中的請求 AWS WAF
<a name="waf-rule-statement-type-rate-based-request-limiting"></a>

本節說明速率限制行為如何適用於以速率為基礎的規則。

 AWS WAF 用於對以速率為基礎的規則限制請求進行評分的條件與 AWS WAF 用於彙總規則請求的條件相同。如果您為規則定義縮小範圍陳述式，則 AWS WAF 只有符合縮小範圍陳述式的彙總、計數和速率限制請求。

導致以速率為基礎的規則將其規則動作設定套用至特定 Web 請求的比對條件如下：
+ 如果已定義，則 Web 請求符合規則的範圍縮小陳述式。
+ Web 請求屬於請求計數目前超過規則限制的彙總執行個體。

**如何 AWS WAF 套用規則動作**  
當以速率為基礎的規則將速率限制套用至請求時，它會套用規則動作，如果您已在動作規格中定義任何自訂處理或標籤，則規則會套用這些動作。此請求處理與比對規則將其動作設定套用至比對 Web 請求的方式相同。速率型規則只會對其主動速率限制的請求套用標籤或執行其他動作。

您可以使用 以外的任何規則動作Allow。如需規則動作的一般資訊，請參閱 [在 中使用規則動作 AWS WAF](waf-rule-action.md)。

下列清單說明速率限制如何針對每個動作運作。
+ **Block** – AWS WAF 封鎖請求並套用您定義的任何自訂封鎖行為。
+ **Count** – AWS WAF 計算請求、套用您定義的任何自訂標頭或標籤，並繼續評估請求的保護套件 (Web ACL)。

  此動作不會限制請求的速率。它只會計算超過限制的請求。
+ **CAPTCHA 或 Challenge** – AWS WAF 根據請求字符的狀態Count，以 Block或 的形式處理請求。

  此動作不會限制具有有效字符的請求速率。它會限制超出限制且也缺少有效字符的請求速率。
  + 如果請求沒有有效、未過期的字符，動作會封鎖請求，並將 CAPTCHA 拼圖或瀏覽器挑戰傳回給用戶端。

    如果最終使用者或用戶端瀏覽器成功回應，用戶端會收到有效的字符，並自動重新傳送原始請求。如果彙總執行個體的速率限制仍然有效，則具有有效、未過期字符的新請求將套用該動作，如下一個項目符號所述。
  + 如果請求具有有效、未過期的字符， CAPTCHA或 Challenge動作會驗證字符，並且不會對請求採取任何動作，類似於 Count動作。以速率為基礎的規則會將請求評估傳回至保護套件 (Web ACL)，而不採取任何終止動作，且保護套件 (Web ACL) 會繼續評估請求。

  如需其他資訊，請參閱 [CAPTCHA 和 Challenge 中的 AWS WAF](waf-captcha-and-challenge.md)。

**如果您只對 IP 地址或轉送 IP 地址進行評分**  
當您將規則設定為僅對轉送 IP 地址的 IP 地址進行速率限制時，您可以擷取規則目前速率限制的 IP 地址清單。如果您使用的是縮小範圍陳述式，速率限制的請求只是 IP 清單中符合縮小範圍陳述式的請求。如需擷取 IP 地址清單的資訊，請參閱 [列出速率受到以速率為基礎的規則限制的 IP 地址](listing-managed-ips.md)。

# 中的以速率為基礎的規則範例 AWS WAF
<a name="waf-rule-statement-type-rate-based-examples"></a>

本節說明各種常見速率型規則使用案例的範例組態。

每個範例都會提供使用案例的說明，然後在自訂設定規則的 JSON 清單中顯示解決方案。

**注意**  
這些範例中顯示的 JSON 清單是在主控台中建立，方法是設定規則，然後使用**規則 JSON 編輯器**進行編輯。

**Topics**
+ [速率限制對登入頁面的請求](waf-rate-based-example-limit-login-page.md)
+ [速率限制來自任何 IP 地址、使用者代理程式對的登入頁面請求](waf-rate-based-example-limit-login-page-keys.md)
+ [速率限制缺少特定標頭的請求](waf-rate-based-example-limit-missing-header.md)
+ [速率限制具有特定標籤的請求](waf-rate-based-example-limit-labels.md)
+ [速率限制具有指定標籤命名空間之標籤的請求](waf-rate-based-example-limit-label-aggregation.md)
+ [速率限制具有特定 ASNs請求](waf-rate-based-example-limit-asn.md)

# 速率限制對登入頁面的請求
<a name="waf-rate-based-example-limit-login-page"></a>

若要限制您網站上登入頁面的請求數量，而不影響您網站其餘部分的流量，您可以建立速率型規則，其範圍縮小陳述式會將請求比對至您的登入頁面，並將請求彙總設為**全部計數**。

速率型規則會計算單一彙總執行個體中登入頁面的所有請求，並在請求超過限制時，將規則動作套用至符合縮小範圍陳述式的所有請求。

下列 JSON 清單顯示此規則組態的範例。計數所有彙總選項會在 JSON 中列為設定 `CONSTANT`。此範例符合以 開頭的登入頁面`/login`。

```
{
  "Name": "test-rbr",
  "Priority": 0,
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "test-rbr"
  },
  "Statement": {
    "RateBasedStatement": {
      "Limit": 1000,
      "EvaluationWindowSec": 300,
      "AggregateKeyType": "CONSTANT",
      "ScopeDownStatement": {
        "ByteMatchStatement": {
          "FieldToMatch": {
            "UriPath": {}
          },
          "PositionalConstraint": "STARTS_WITH",
          "SearchString": "/login",
          "TextTransformations": [
            {
              "Type": "NONE",
              "Priority": 0
            }
          ]
        }
      }
    }
  }
}
```

# 速率限制來自任何 IP 地址、使用者代理程式對的登入頁面請求
<a name="waf-rate-based-example-limit-login-page-keys"></a>

若要限制 IP 地址登入頁面的請求數量，超出限制的使用者代理程式對，請將請求彙總設定為**自訂金鑰**，並提供彙總條件。

下列 JSON 清單顯示此規則組態的範例。在此範例中，我們已將每個 IP 地址、使用者代理程式對的 5 分鐘內限制為 100 個請求。

```
{
  "Name": "test-rbr",
  "Priority": 0,
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "test-rbr"
  },
  "Statement": {
    "RateBasedStatement": {
      "Limit": 100,
      "EvaluationWindowSec": 300,
      "AggregateKeyType": "CUSTOM_KEYS",
      "CustomKeys": [
        {
          "Header": {
            "Name": "User-Agent",
            "TextTransformations": [
              {
                "Priority": 0,
                "Type": "NONE"
              }
            ]
          }
        },
        {
          "IP": {}
        }
      ],
      "ScopeDownStatement": {
        "ByteMatchStatement": {
          "FieldToMatch": {
            "UriPath": {}
          },
          "PositionalConstraint": "STARTS_WITH",
          "SearchString": "/login",
          "TextTransformations": [
            {
              "Type": "NONE",
              "Priority": 0
            }
          ]
        }
      }
    }
  }
}
```

# 速率限制缺少特定標頭的請求
<a name="waf-rate-based-example-limit-missing-header"></a>

若要限制缺少特定標頭的請求數量，您可以使用**計數所有**彙總選項搭配縮小範圍陳述式。使用邏輯`NOT`陳述式設定縮小範圍陳述式，其中包含僅在標頭存在且具有值時傳回 true 的陳述式。

下列 JSON 清單顯示此規則組態的範例。

```
{
  "Name": "test-rbr",
  "Priority": 0,
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "test-rbr"
  },
  "Statement": {
    "RateBasedStatement": {
      "Limit": 1000,
      "AggregateKeyType": "CONSTANT",
      "EvaluationWindowSec": 300,
      "ScopeDownStatement": {
        "NotStatement": {
          "Statement": {
            "SizeConstraintStatement": {
              "FieldToMatch": {
                "SingleHeader": {
                  "Name": "user-agent"
                }
              },
              "ComparisonOperator": "GT",
              "Size": 0,
              "TextTransformations": [
                {
                  "Type": "NONE",
                  "Priority": 0
                }
              ]
            }
          }
        }
      }
    }
  }
}
```

# 速率限制具有特定標籤的請求
<a name="waf-rate-based-example-limit-labels"></a>

若要限制各種類別的請求數量，您可以將速率限制與將標籤新增至請求的任何規則或規則群組結合。若要這樣做，您可以設定保護套件 (Web ACL)，如下所示：
+ 新增新增標籤的規則或規則群組，並加以設定，使其不會封鎖或允許您想要對限制進行評分的請求。如果您使用受管規則群組，您可能需要覆寫 的一些規則群組規則動作Count，才能達成此行為。
+ 將速率型規則新增至您的保護套件 (Web ACL)，其優先順序數字設定高於標籤規則和規則群組。 會以數字順序 AWS WAF 評估規則，從最低開始，因此您的速率型規則將在標籤規則之後執行。使用規則縮小範圍陳述式和標籤彙總中的標籤比對組合，在標籤上設定速率限制。

下列範例使用 Amazon IP 評價清單 AWS 受管規則規則群組。規則群組規則`AWSManagedIPDDoSList`會偵測並標記已知 IPs正主動參與 DDoS 活動的請求。規則的 動作在規則群組定義Count中設定為 。如需規則群組的詳細資訊，請參閱 [Amazon IP 評價清單受管規則群組](aws-managed-rule-groups-ip-rep.md#aws-managed-rule-groups-ip-rep-amazon)。

下列保護套件 (Web ACL) JSON 清單使用 IP 評價規則群組，後面接著標籤比對速率型規則。速率型規則使用縮小範圍陳述式來篩選由規則群組規則標記的請求。以速率為基礎的規則陳述式會彙總 ，並依其 IP 地址限制篩選的請求。

```
{
  "Name": "test-web-acl",
  "Id": ... 
  "ARN": ...
  "DefaultAction": {
    "Allow": {}
  },
  "Description": "",
  "Rules": [
    {
      "Name": "AWS-AWSManagedRulesAmazonIpReputationList",
      "Priority": 0,
      "Statement": {
        "ManagedRuleGroupStatement": {
          "VendorName": "AWS",
          "Name": "AWSManagedRulesAmazonIpReputationList"
        }
      },
      "OverrideAction": {
        "None": {}
      },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "AWS-AWSManagedRulesAmazonIpReputationList"
      }
    },
    {
      "Name": "test-rbr",
      "Priority": 1,
      "Statement": {
        "RateBasedStatement": {
          "Limit": 100,
          "EvaluationWindowSec": 300,
          "AggregateKeyType": "IP",
          "ScopeDownStatement": {
            "LabelMatchStatement": {
              "Scope": "LABEL",
              "Key": "awswaf:managed:aws:amazon-ip-list:AWSManagedIPDDoSList"
            }
          }
        }
      },
      "Action": {
        "Block": {}
      },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "test-rbr"
      }
    }
  ],
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "test-web-acl"
  },
  "Capacity": 28,
  "ManagedByFirewallManager": false,
  "RetrofittedByFirewallManager": false,
  "LabelNamespace": "awswaf:0000000000:webacl:test-web-acl:"
}
```

# 速率限制具有指定標籤命名空間之標籤的請求
<a name="waf-rate-based-example-limit-label-aggregation"></a>

**注意**  
Bot Control 受管規則群組中的常見層級規則會為各種類別的機器人新增標籤，但只會封鎖來自未驗證機器人的請求。如需這些規則的詳細資訊，請參閱 [機器人控制規則清單](aws-managed-rule-groups-bot.md#aws-managed-rule-groups-bot-rules)。

如果您使用 Bot Control 受管規則群組，則可以為來自個別已驗證機器人的請求新增速率限制。若要這樣做，您可以新增在 Bot Control 規則群組之後執行的速率型規則，並依其機器人名稱標籤彙總請求。您可以指定**標籤命名空間**彙總金鑰，並將命名空間金鑰設定為 `awswaf:managed:aws:bot-control:bot:name:`。具有指定命名空間的每個唯一標籤都會定義彙總執行個體。例如，標籤`awswaf:managed:aws:bot-control:bot:name:axios`和`awswaf:managed:aws:bot-control:bot:name:curl`每個標籤都會定義彙總執行個體。

下列保護套件 (Web ACL) JSON 清單顯示此組態。此範例中的規則會將任何單一機器人彙總執行個體的請求限制在兩分鐘內 1，000 個。

```
{
  "Name": "test-web-acl",
  "Id": ... 
  "ARN": ...
  "DefaultAction": {
    "Allow": {}
  },
  "Description": "",
  "Rules": [
    {
      "Name": "AWS-AWSManagedRulesBotControlRuleSet",
      "Priority": 0,
      "Statement": {
        "ManagedRuleGroupStatement": {
          "VendorName": "AWS",
          "Name": "AWSManagedRulesBotControlRuleSet",
          "ManagedRuleGroupConfigs": [
            {
              "AWSManagedRulesBotControlRuleSet": {
                "InspectionLevel": "COMMON"
              }
            }
          ]
        }
      },
      "OverrideAction": {
        "None": {}
      },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "AWS-AWSManagedRulesBotControlRuleSet"
      }
    },
    {
      "Name": "test-rbr",
      "Priority": 1,
      "Statement": {
        "RateBasedStatement": {
          "Limit": 1000,
          "EvaluationWindowSec": 120,
          "AggregateKeyType": "CUSTOM_KEYS",
          "CustomKeys": [
            {
              "LabelNamespace": {
                "Namespace": "awswaf:managed:aws:bot-control:bot:name:"
              }
            }
          ]
        }
      },
      "Action": {
        "Block": {}
      },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "test-rbr"
      }
    }
  ],
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "test-web-acl"
  },
  "Capacity": 82,
  "ManagedByFirewallManager": false,
  "RetrofittedByFirewallManager": false,
  "LabelNamespace": "awswaf:0000000000:webacl:test-web-acl:"
}
```

# 速率限制具有特定 ASNs請求
<a name="waf-rate-based-example-limit-asn"></a>

若要根據請求的 IP 地址限制來自特定自治系統編號 (ASNs) 的請求數量，請將請求彙總設定為*自訂金鑰*並提供彙總條件。

下列 JSON 顯示彙總衍生自 `X-Forwarded-For`標頭中轉送 IP 地址之 ASNs 的規則範例。如果 AWS WAF 因為 IP 地址格式錯誤而無法衍生 ASN，則備用行為會設為 `MATCH`。

```
{
    "Name": "test-rbr",
    "Priority": 0,
    "Statement": {
        "RateBasedStatement": {
            "AggregateKeyType": "CUSTOM_KEYS",
            "CustomKeys": [
                {
                    "ASN": {}
                },
                {
                    "ForwardedIP": {}
                }
            ],
            "EvaluationWindowSec": 300,
            "ForwardedIPConfig": {
                "FallbackBehavior": "MATCH",
                "HeaderName": "X-Forwarded-For"
            },
            "Limit": 2000
        }
    },
    "VisibilityConfig": {
        "CloudWatchMetricsEnabled": true,
        "MetricName": "test-rbr",
        "SampledRequestsEnabled": true
    }
}
```

# 列出速率受到以速率為基礎的規則限制的 IP 地址
<a name="listing-managed-ips"></a>

本節說明如何使用 CLI、 API 或任何SDKs，存取速率型規則目前限制速率的 IP 地址清單。

如果您的速率型規則僅彙總 IP 地址或轉送 IP 地址，您可以擷取規則目前速率限制的 IP 地址清單。 會將這些 IP 地址 AWS WAF 存放在規則的受管金鑰清單中。

**注意**  
只有在您僅彙總 IP 地址或標頭中的 IP 地址時，才能使用此選項。如果您使用自訂金鑰請求彙總，則無法擷取速率受限 IP 地址的清單，即使您在自訂金鑰中使用其中一個 IP 地址規格。

速率型規則會將其規則動作套用至規則受管金鑰清單中符合規則縮小範圍陳述式的請求。當規則沒有縮小範圍陳述式時，它會將 動作套用至清單中 IP 地址的所有請求。規則動作Block預設為 ，但除了 之外，它可以是任何有效的規則動作Allow。使用單一速率型規則執行個體 AWS WAF 可對限制進行評分的 IP 地址數目上限為 10，000。如果超過 10，000 個地址超過速率限制， 會 AWS WAF 限制速率最高的地址。

您可以使用 CLI、API 或任何 SDKs 來存取速率型規則的受管金鑰清單。本主題涵蓋使用 CLI 和 API 進行存取。主控台目前不提供對清單的存取權。

對於 AWS WAF API，命令為 [GetRateBasedStatementManagedKeys](https://docs.aws.amazon.com/waf/latest/APIReference/API_GetRateBasedStatementManagedKeys.html)。

對於 AWS WAF CLI，命令為 [get-rate-based-statement-managed-keys](https://docs.aws.amazon.com/cli/latest/reference/wafv2/get-rate-based-statement-managed-keys.html)。

以下顯示擷取 Amazon CloudFront 分佈上保護套件 (Web ACL) 中使用的以速率為基礎的規則之速率限制 IP 地址清單的語法。

```
aws wafv2 get-rate-based-statement-managed-keys --scope=CLOUDFRONT --region=us-east-1 --web-acl-name=WebACLName --web-acl-id=WebACLId --rule-name=RuleName
```

以下顯示區域應用程式、Amazon API Gateway REST API、Application Load Balancer、a AWS AppSync GraphQL API、Amazon Cognito 使用者集區 AWS Amplify、 AWS App Runner 服務或 AWS Verified Access 執行個體的語法。

```
aws wafv2 get-rate-based-statement-managed-keys --scope=REGIONAL --region=region --web-acl-name=WebACLName --web-acl-id=WebACLId --rule-name=RuleName
```

AWS WAF 會監控 Web 請求，並針對保護套件 (Web ACL)、選用規則群組和速率型規則的每個唯一組合獨立管理金鑰。例如，如果您在規則群組內定義速率型規則，然後在保護套件 (Web ACL) 中使用規則群組， AWS WAF 則監控 Web 請求並管理該保護套件 (Web ACL)、規則群組參考陳述式和速率型規則執行個體的金鑰。如果您在第二個保護套件 (Web ACL) 中使用相同的規則群組， AWS WAF 會監控 Web 請求並管理此第二個用途的金鑰，完全獨立於您的第一個。

對於您在規則群組中定義的以速率為基礎的規則，除了保護套件 (Web ACL) 名稱和規則群組內以速率為基礎的規則名稱之外，您還需要在請求中提供規則群組參考陳述式的名稱。以下顯示區域應用程式的語法，其中以速率為基礎的規則是在規則群組內定義，而規則群組用於保護套件 (Web ACL)。

```
aws wafv2 get-rate-based-statement-managed-keys --scope=REGIONAL --region=region --web-acl-name=WebACLName --web-acl-id=WebACLId --rule-group-rule-name=RuleGroupRuleName --rule-name=RuleName
```

# 在 中使用規則群組規則陳述式 AWS WAF
<a name="waf-rule-statements-rule-group"></a>

**注意**  
規則群組規則陳述式不可巢狀化。

本節說明您可以在保護套件 (Web ACL) 中使用的規則群組規則陳述式。規則群組保護套件 (Web ACL) 容量單位 (WCUs) 由規則群組擁有者在建立時設定。如需 WCU 的相關資訊，請參閱 [中的 Web ACL 容量單位 WCUs) AWS WAF](aws-waf-capacity-units.md)。


| 規則群組陳述式 | Description | WCU | 
| --- | --- | --- | 
|  [使用受管規則群組陳述式](waf-rule-statement-type-managed-rule-group.md)  |  執行指定的受管規則群組中定義的規則。 您可以新增縮小範圍陳述式，縮小規則群組評估的請求範圍。 您無法在任何其他陳述式類型中巢狀化受管規則群組陳述式。  |  由規則群組定義，加上範圍縮小陳述式的任何其他 WCUs。  | 
| [使用規則群組陳述式](waf-rule-statement-type-rule-group.md) | 執行在您管理的規則群組中定義的規則。 您無法將縮小範圍陳述式新增至您自己的規則群組的規則群組參考陳述式。 您無法在任何其他陳述式類型內巢狀化規則群組陳述式  | 您可以在建立規則群組時定義規則群組的 WCU 限制。 | 

# 在 中使用受管規則群組陳述式 AWS WAF
<a name="waf-rule-statement-type-managed-rule-group"></a>

本節說明 受管規則群組規則陳述式的運作方式。

受管規則群組規則陳述式會將保護套件 (Web ACL) 規則清單中的參考新增至受管規則群組。您在主控台的規則陳述式下看不到此選項，但當您使用 Web ACL 的 JSON 格式時，您已新增的任何受管規則群組都會在保護套件 (Web ACL) 規則下顯示為此類型。

受管規則群組是 AWS 受管規則規則群組，其中大部分是免費提供給 AWS WAF 客戶，或是 AWS Marketplace 受管規則群組。當您將付費 AWS 的受管規則規則群組新增至保護套件 (Web ACL) 時，您會自動訂閱這些規則群組。您可以透過 訂閱 AWS Marketplace 受管規則群組 AWS Marketplace。如需詳細資訊，請參閱[在 中使用受管規則群組 AWS WAF](waf-managed-rule-groups.md)。

當您將規則群組新增至保護套件 (Web ACL) 時，您可以將群組中規則的動作覆寫為 Count或另一個規則動作。如需詳細資訊，請參閱[在 中覆寫規則群組動作 AWS WAF](web-acl-rule-group-override-options.md)。

您可以縮小使用規則群組 AWS WAF 評估的請求範圍。若要這樣做，您可以在規則群組陳述式中新增縮小範圍陳述式。如需縮小範圍陳述式的詳細資訊，請參閱 [在 中使用縮小範圍陳述式 AWS WAF](waf-rule-scope-down-statements.md)。這可協助您管理規則群組如何影響流量，並協助您在使用規則群組時控制與流量相關聯的成本。如需搭配 AWS WAF Bot Control 受管規則群組使用縮小範圍陳述式的資訊和範例，請參閱 [AWS WAF 機器人控制](waf-bot-control.md)。

## 規則陳述式特性
<a name="managed-rule-group-rule-statement-characteristics"></a>

**不可巢**狀化 – 您無法將此陳述式類型巢狀在其他陳述式中，也無法將其包含在規則群組中。您可以直接將其包含在保護套件 (Web ACL) 中。

**（選用） 縮小範圍陳述式** – 此規則類型需要選用縮小範圍陳述式，以縮小規則群組評估的請求範圍。如需詳細資訊，請參閱[在 中使用縮小範圍陳述式 AWS WAF](waf-rule-scope-down-statements.md)。

**WCUs** – 在建立時為規則群組設定 。

## 尋找此規則陳述式的位置
<a name="managed-rule-group-rule-statement-where-to-find"></a>
+ **主控台** – 在建立保護套件 (Web ACL) 的過程中，在**新增規則和規則群組**頁面上，選擇**新增受管規則群組**，然後尋找並選取您要使用的規則群組。
+ **API** – [ManagedRuleGroupStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_ManagedRuleGroupStatement.html)

# 在 中使用規則群組陳述式 AWS WAF
<a name="waf-rule-statement-type-rule-group"></a>

本節說明規則群組規則陳述式的運作方式。

規則群組規則陳述式會將保護套件 (Web ACL) 規則清單的參考新增至您管理的規則群組。您在主控台的規則陳述式下看不到此選項，但當您使用保護套件 (Web ACL) 的 JSON 格式時，您已新增的任何規則群組都會顯示在此類型的保護套件 (Web ACL) 規則下。如需有關使用您自己的規則群組的資訊，請參閱 [管理您自己的規則群組](waf-user-created-rule-groups.md)。

當您將規則群組新增至保護套件 (Web ACL) 時，您可以將群組中規則的動作覆寫為 Count或另一個規則動作。如需詳細資訊，請參閱[在 中覆寫規則群組動作 AWS WAF](web-acl-rule-group-override-options.md)。

## 規則陳述式特性
<a name="rule-group-rule-statement-characteristics"></a>

**不可巢**狀化 – 您無法將此陳述式類型巢狀在其他陳述式中，也無法將其包含在規則群組中。您可以直接將其包含在保護套件 (Web ACL) 中。

**WCUs** – 在建立時為規則群組設定 。

## 尋找此規則陳述式的位置
<a name="rule-group-rule-statement-where-to-find"></a>
+ **主控台** – 在建立保護套件 (Web ACL) 的過程中，在**新增規則和規則群組**頁面上，選擇**新增我自己的規則和規則群組**、**規則群組**，然後新增您要使用的規則群組。
+ **API** – [RuleGroupReferenceStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_RuleGroupReferenceStatement.html)