

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

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

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

# 插入非封鎖動作的自訂請求標頭
<a name="customizing-the-incoming-request"></a>

本節說明如何在規則動作未封鎖請求時 AWS WAF ，指示 將自訂標頭插入原始 HTTP 請求。使用此選項，您只能將 新增至請求。您無法修改或取代原始請求的任何部分。自訂標頭插入的使用案例包括發出下游應用程式的訊號，根據插入的標頭以不同方式處理請求，並標記分析請求。

**重要**  
此選項適用於規則動作 Allow、CAPTCHA、 Count和 ，Challenge以及設定為 的保護套件 (Web ACL) 預設動作Allow。如需規則動作的詳細資訊，請參閱 [在 中使用規則動作 AWS WAF](waf-rule-action.md)。如需預設保護套件 (Web ACL) 動作的詳細資訊，請參閱 [在 中設定保護套件 (Web ACL) 預設動作 AWS WAF](web-acl-default-action.md)。

## 使用自訂請求標頭名稱時的考量
<a name="using-custom-request-header-names"></a>

**新增至請求標頭的字首**  
AWS WAF 會為其插入的所有請求標頭加上字首`x-amzn-waf-`，以避免與已在請求中的標頭混淆。例如，如果您指定標頭名稱 `sample`， 會 AWS WAF 插入標頭 `x-amzn-waf-sample`。

**重要**  
作為安全實務，您可以新增字串比對規則，封鎖標頭已以 開頭的請求`x-amzn-waf-`。這會封鎖來自非AWS WAF 來源的請求，這些來源模擬處理自訂請求標頭時 AWS WAF 插入的`x-amzn-waf-`字首字串。

下列範例顯示字串比對規則，設定為封鎖未插入`x-amzn-waf-`字首的流量 AWS WAF：

```
    "Rules": [
        {
          "Name": "CustomHeader",
          "Priority": 0,
          "Statement": {
            "ByteMatchStatement": {
              "SearchString": " x-amzn-waf-",
              "FieldToMatch": {
                "Headers": {
                  "MatchPattern": {
                    "All": {}
                  },
                  "MatchScope": "KEY",
                  "OversizeHandling": "MATCH"
                }
              },
              "TextTransformations": [
                {
                  "Priority": 0,
                  "Type": "NONE"
                }
              ],
              "PositionalConstraint": "STARTS_WITH"
            }
          },
          "Action": {
            "Block": {}
          },
          "VisibilityConfig": {
            "SampledRequestsEnabled": true,
            "CloudWatchMetricsEnabled": true,
            "MetricName": "CustomHeader"
          }
        }
      ]
```

如需使用字串比對規則的資訊，請參閱 [字串比對規則陳述式](waf-rule-statement-type-string-match.md)。

**具有相同名稱的標頭**  
如果請求已有插入中相同名稱的標頭 AWS WAF ， 會 AWS WAF 覆寫標頭。因此，如果您在多個具有相同名稱的規則中定義標頭，則檢查請求並尋找相符項目的最後一個規則會新增其標頭，而任何先前的規則都不會新增。

## 搭配非終止規則動作使用自訂標頭
<a name="custom-request-header-non-terminating-rule-actions"></a>

與 Allow動作不同，Count動作不會 AWS WAF 停止使用保護套件 (Web ACL) 中的其餘規則來處理 Web 請求。同樣地，當 CAPTCHA和 Challenge判斷請求字符有效時，這些動作不會 AWS WAF 停止處理 Web 請求。因此，如果您使用規則搭配其中一個動作來插入自訂標頭，後續規則也可能插入自訂標頭。如需規則動作行為的詳細資訊，請參閱 [在 中使用規則動作 AWS WAF](waf-rule-action.md)。

例如，假設您有下列規則，依顯示的順序排定優先順序：

1. RuleA 具有Count動作和名為 的自訂標頭`RuleAHeader`。

1. RuleB 具有 Allow動作和名為 的自訂標頭`RuleBHeader`。

如果請求同時符合 RuleA 和 RuleB， 會 AWS WAF 插入標頭 `x-amzn-waf-RuleAHeader`和 `x-amzn-waf-RuleBHeader`，然後將請求轉送到受保護的資源。

AWS WAF 在完成檢查請求時， 會將自訂標頭插入 Web 請求。因此，如果您將自訂請求處理與 動作設為 的規則搭配使用Count，則您新增的自訂標頭不會由後續規則檢查。

## 自訂請求處理範例
<a name="example-custom-request-handling"></a>

您可以定義規則動作或保護套件 (Web ACL) 預設動作的自訂請求處理。以下清單顯示新增至保護套件 (Web ACL) 預設動作的自訂處理 JSON。

```
{
 "Name": "SampleWebACL",
 "Scope": "REGIONAL",
 "DefaultAction": {
  "Allow": {
   "CustomRequestHandling": {
    "InsertHeaders": [
     {
      "Name": "fruit",
      "Value": "watermelon"
     },
     {
      "Name": "pie",
      "Value": "apple"
     }
    ]
   }
  }
 },
 "Description": "Sample protection pack (web ACL) with custom request handling configured for default action.",
 "Rules": [],
 "VisibilityConfig": {
  "SampledRequestsEnabled": true,
  "CloudWatchMetricsEnabled": true,
  "MetricName": "SampleWebACL"
 }
}
```