

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

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

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

# 在 中使用相符規則陳述式 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)