要求元件選項 - AWS WAF、 AWS Firewall Manager、和 AWS Shield Advanced

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

要求元件選項

本節說明您可以指定用於檢查的 Web 要求元件。您可以為尋找 Web 請求中的模式的匹配規則語句指定請求組件。這些類型的語句包括字符串匹配,正則表達式匹配,大小約束和 SQL 注入攻擊語句。如需如何使用這些要求元件設定的詳細資訊,請參閱以下網址的個別規則陳述式 比對規則陳述式

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

注意

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

主 AWS WAF 控台和 API 文件提供下列位置的要求元件設定指引:

  • 主控台上的規則產生器 — 在一般規則類型的陳述式設定中,在 [請求元件] 下的 [檢查] 對話方塊中選擇您要檢查的元件

  • API 陳述式內容FieldToMatch

本節的其餘部分描述了要檢查的 Web 請求部分的選項。

HTTP 方法

檢查要求的 HTTP 方法。HTTP 方法指出 Web 請求要求受保護的資源執行的操作類型,例如POSTGET

單一標頭

檢查請求中的單個命名標頭。對於此選項,您可以指定標頭名稱,例如,User-AgentReferer。名稱的字串比對不區分大小寫。

所有標題

檢查所有要求標頭,包括 Cookie。您可以套用篩選器來檢查所有標頭的子集。對於此選項,您可以提供下列規格:

  • 匹配模式 — 用於獲取標題子集以進行檢查的過濾器。 AWS WAF 在標題鍵中查找這些模式。

    比對模式設定可以是下列其中一種:

    • 全部 — 匹配所有鍵。評估所有標題的規則檢查條件。

    • 排除的標頭 — 僅檢查其金鑰不符合您在此處指定的任何字串的標頭。鍵的字符串匹配不區分大小寫。

    • 包含的標頭 — 僅檢查具有與您在此處指定的其中一個字串相符的索引鍵的標頭。鍵的字符串匹配不區分大小寫。

  • 比對範圍 — AWS WAF 應使用規則檢查條件檢查的標頭部分。您可以指定 [索引鍵]、[] 或 [全部] 來檢查相符項目的索引鍵和值。

    A@@ ll 並不需要在鍵中找到匹配項,並在值中找到匹配項。它需要在鍵或值或兩者中找到匹配。若要在索引鍵和值中要求相符項目,請使用邏輯AND陳述式來組合兩個比對規則,一個會檢查索引鍵,另一個會檢查這些值。

  • 超大處理 — AWS WAF 如何處理標頭資料大於 AWS WAF 可檢查的要求。 AWS WAF 最多可以檢查請求標頭的前 8 KB(8,192 字節),最多可以檢查前 200 個標頭。內容可供檢查,最多可 AWS WAF 達到第一個限制。您可以選擇繼續檢驗,或跳過檢驗並將請求標示為符合或不符合規則。如需有關處理過大內容的詳細資訊,請參閱處理過大的 Web 請求組件 AWS WAF

表頭順序

檢查包含要求標頭名稱清單的字串,依照它們在 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

Cookie

檢查所有的請求餅乾。您可以套用篩選器來檢查所有 Cookie 的子集。對於此選項,您可以提供下列規格:

  • 匹配模式 — 用於獲取 cookie 子集以進行檢查的過濾器。 AWS WAF 會在 Cookie 金鑰中尋找這些模式。

    比對模式設定可以是下列其中一種:

    • 全部 — 匹配所有鍵。評估所有 Cookie 的規則檢查標準。

    • 排除的 Cookie — 僅檢查其金鑰不符合您在此處指定的任何字串的 Cookie。密鑰的字符串匹配區分大小寫,並且必須完全相符。

    • 包含的 Cookie — 僅檢查具有與您在此處指定的其中一個字串相符的金鑰的 Cookie。密鑰的字符串匹配區分大小寫,並且必須完全相符。

  • 比對範圍 — Cookie AWS WAF 應使用規則檢查條件檢查的部分。您可以為鍵和指定「鍵」、「值」或「全部」。

    A@@ ll 並不需要在鍵中找到匹配項,並在值中找到匹配項。它需要在鍵或值或兩者中找到匹配。若要在索引鍵和值中要求相符項目,請使用邏輯AND陳述式來組合兩個比對規則,一個會檢查索引鍵,另一個會檢查這些值。

  • 超大處理 — AWS WAF 如何處理 Cookie 資料大於 AWS WAF 可檢查的要求。 AWS WAF 最多可以檢查請求餅乾的前 8 KB(8,192 字節),最多可以檢查前 200 個餅乾。內容可供檢查,最多可 AWS WAF 達到第一個限制。您可以選擇繼續檢驗,或跳過檢驗並將請求標示為符合或不符合規則。如需有關處理過大內容的詳細資訊,請參閱處理過大的 Web 請求組件 AWS WAF

URI 路徑

檢查識別資源的 URL 部分,/images/daily-ad.jpg例如。如需詳細資訊,請參閱統一資源識別元 (URI):一般語法

如果您未搭配此選項使用文字轉換,則 AWS WAF 不會將 URI 標準化,並且會完全依照從要求中從用戶端接收到的方式進行檢查。如需有關文字轉換的資訊,請參閱文字轉換

指紋

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

如何獲取客戶端的 JA3 指紋

您可以從網頁 ACL 記錄取得用戶端要求的 JA3 指紋。如果能 AWS WAF 夠計算指紋,它將其包含在日誌中。如需有關記錄欄位的資訊,請參閱日誌欄位

規則陳述式需求

您只能在字串 match 陳述式中檢查 JA3 指紋,該陳述式設定為完全符合您提供的字串。從字串 match 陳述式規格中的記錄提供 JA3 指紋字串,以符合任何 future 具有相同 TLS 組態的要求。如需有關字串 match 陳述式的資訊,請參閱字串比對規則陳述式

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

若要使用此比對選項,您必須記錄 Web ACL 流量。如需相關資訊,請參閱記錄 AWS WAF 網頁 ACL 流量

查詢字串

檢查出現在?字元後面的 URL 部分 (如果有的話)。

注意

對於跨網站指令碼比對陳述式,建議您選擇 [所有查詢參數],而不是 [查詢字串]。選擇所有查詢參數會將 10 個 WCU 新增至基本成本。

單一查詢參數

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

對於此選項,您也可以指定 Query 引數。例如,如果 URL 是www.xyz.com?UserName=abc&SalesRegion=seattle,您可以SalesRegion為查詢引數指定UserName或。引數名稱的最大長度為 30 個字元。名稱不區分大小寫,因此如果您指定UserName,則會 AWS WAF 比對的所有變體UserName,包括usernameUsERName

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

所有查詢參數

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

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

Body

檢查請求主體,評估為純文本。您也可以使用JSON內容類型將本文評估為 JSON。

要求主體是緊接在要求標頭之後的要求的一部分。它包含 Web 請求所需的任何其他數據,例如,來自表單的數據。

  • 在控制台中,您可以在「請求」選項選擇「主」下選擇「內容類型」選擇「純文本」選擇。

  • 在 API 中,在規則的FieldToMatch規格中,您可Body以指定以純文字檢查要求內文。

對於 Application Load Balancer AWS AppSync, AWS WAF 可以檢查要求主體的前 8 KB。對於 CloudFront API Gateway、Amazon Cognito、應用程式執行器和驗證存取,預設情況下 AWS WAF 可以檢查前 16 KB,而且您可以在 Web ACL 組態中將限制增加到 64 KB。如需詳細資訊,請參閱 管理車身檢查尺寸限制

您必須為此元件類型指定過大處理。超大處理定義如何 AWS WAF 處理具有大於 AWS WAF 可檢查的主體資料的要求。您可以選擇繼續檢驗,或跳過檢驗並將請求標示為符合或不符合規則。如需有關處理過大內容的詳細資訊,請參閱處理過大的 Web 請求組件 AWS WAF

您也可以將主體評估為已剖析的 JSON。如需相關資訊,請參閱下一節。

正文

檢查請求主體,評估為 JSON。您也可以將本文評估為純文字。

要求主體是緊接在要求標頭之後的要求的一部分。它包含 Web 請求所需的任何其他數據,例如,來自表單的數據。

  • 在控制台中,您可以在請求選項選擇文下選擇此選項,通過選擇內容類型選擇 JSON

  • 在 API 中,您可以在規則的FieldToMatch規格中指定JsonBody

對於 Application Load Balancer AWS AppSync, AWS WAF 可以檢查要求主體的前 8 KB。對於 CloudFront API Gateway、Amazon Cognito、應用程式執行器和驗證存取,預設情況下 AWS WAF 可以檢查前 16 KB,而且您可以在 Web ACL 組態中將限制增加到 64 KB。如需詳細資訊,請參閱 管理車身檢查尺寸限制

您必須為此元件類型指定過大處理。超大處理定義如何 AWS WAF 處理具有大於 AWS WAF 可檢查的主體資料的要求。您可以選擇繼續檢驗,或跳過檢驗並將請求標示為符合或不符合規則。如需有關處理過大內容的詳細資訊,請參閱處理過大的 Web 請求組件 AWS WAF

當 AWS WAF 檢查 Web 請求主體作為解析的 JSON 時,它會從 JSON 中解析和提取元素,並檢查您使用規則的匹配語句條件指示的部分。

選擇此選項,比對陳述式的基本成本 WCU 會加倍。例如,如果比對陳述式的基本成本是 5 個沒有 JSON 剖析的 WCU,則使用 JSON 剖析會將成本加倍至 10 個 WCU。

使用此選項, AWS WAF 會針對 Web 要求主體執行兩種比對模式。第一匹配模式的輸出被用作輸入到第二匹配模式:

  1. AWS WAF 剖析並擷取 JSON 內容,並識別要檢查的元素。若要這麼做,請 AWS WAF 使用您在規則的 JSON 主體規格中提供的條件。

  2. AWS WAF 將任何文字轉換套用至擷取的元素,然後將產生的 JSON 元素與規則陳述式的符合條件比對。如果有任何元素相符,則 Web 要求就會與規則相符。

您可以為 AWS WAF 第一個模式比對步驟指定下列準則,以識別要檢查的 JSON 元素:

  • 主體解析後備行為-如 AWS WAF 果無法完全解析 JSON 主體,該怎麼辦。以下為可用選項:

    • 無 (預設行為)-只 AWS WAF 會評估內容,直到遇到剖析錯誤的時間點為止。

    • 評估為字符串-檢查正文為純文本。 AWS WAF 會將您為 JSON 檢查定義的文字轉換和檢驗準則套用至內文字串。

    • 匹配-將 Web 請求視為規則語句匹配。 AWS WAF 將規則動作套用至請求。

    • 不匹配-將 Web 請求視為與規則語句不匹配。

    AWS WAF 盡最大努力解析整個 JSON 主體,但可能會因為無效字符,重複鍵,截斷以及根節點不是對象或數組的任何內容而被迫停止。

    AWS WAF 將下列範例中的 JSON 剖析為兩個有效的索引鍵:value 配對:

    • 缺失逗號:{"key1":"value1""key2":"value2"}

    • 缺失冒號:{"key1":"value1","key2""value2"}

    • 額外冒號:{"key1"::"value1","key2""value2"}

  • JSON 比對範圍 — JSON 中 AWS WAF 應檢查的元素類型。您可以為鍵和指定「鍵」、「值」或「全部」。

    A@@ ll 並不需要在鍵中找到匹配項,並在值中找到匹配項。它需要在鍵或值或兩者中找到匹配。若要在索引鍵和值中要求相符項目,請使用邏輯AND陳述式來組合兩個比對規則,一個會檢查索引鍵,另一個會檢查這些值。

  • 要檢查的內容 — 已剖析並擷取的 JSON 中您 AWS WAF 要檢查的元素。

    您必須指定下列其中一項:

    • 完整的 JSON 內容-評估已剖析 JSON 中的所有元素。

    • 僅包含的元素-僅評估 JSON 中符合您提供的 JSON 指針條件的元素。如需 JSON 指標語法的相關資訊,請參閱網際網路工程工作小組 (IETF) 文JavaScript 件物件標記法 (JSON) 指標

      請勿使用此選項在 JSON 中包含所有路徑。請改用完整的 JSON 內容

      例如,在控制台中,您可以提供以下內容:

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

      在 API 或 CLI 中,您可以提供下列資訊:

      "IncludedPaths": ["/dogs/0/name", "/dogs/1/name"]
JSON 主體檢查案例範例

如果包含的元素設置為/a/b,則對於以下 JSON 主體:

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

下列清單說 AWS WAF 明每個比對範圍設定的評估方式。不評估密鑰b,這是包含的元素路徑的一部分。

  • 對於一個匹配範圍設置為 all:e, f,g

  • 對於設置為 key: e 和的匹配範圍f

  • 對於匹配範圍設置為值:g