要求元件選項 - 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 達到第一個限制。您可以選擇繼續檢驗,或跳過檢驗並將請求標示為符合或不符合規則。如需有關處理過大內容的詳細資訊,請參閱處理超大請求組件 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 達到第一個限制。您可以選擇繼續檢查可用的標頭,或跳過檢查並將請求標示為符合或不符合規則。如需有關處理過大內容的詳細資訊,請參閱處理超大請求組件 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 達到第一個限制。您可以選擇繼續檢驗,或跳過檢驗並將請求標示為符合或不符合規則。如需有關處理過大內容的詳細資訊,請參閱處理超大請求組件 AWS WAF

URI 路徑

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

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

指紋

檢查請求的 JA3 指紋。

注意

JA3 指紋檢測僅適用於 Amazon CloudFront 分發和應用程式負載平衡器。

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

如何獲取客戶端的 JA3 指紋

您可以從 Web 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 可檢查的主體資料的要求。您可以選擇繼續檢驗,或跳過檢驗並將請求標示為符合或不符合規則。如需有關處理過大內容的詳細資訊,請參閱處理超大請求組件 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 可檢查的主體資料的要求。您可以選擇繼續檢驗,或跳過檢驗並將請求標示為符合或不符合規則。如需有關處理過大內容的詳細資訊,請參閱處理超大請求組件 AWS WAF

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

JSON 主體檢查的步驟和選項

當將 Web 請求主體檢 AWS WAF 查為 JSON 時,它會執行分析主體並提取 JSON 元素以進行檢查的步驟。以下列出此要求元件類型的步驟和其他組態選項。

  1. 剖析內文內容 — AWS WAF 剖析 Web 要求主體的內容,以擷取 JSON 元素以進行檢查。 AWS WAF 盡力解析主體的全部內容,但解析可能會因內容中的各種錯誤狀態而失敗。範例包括無效字元、重複索引鍵、截斷,以及根節點不是物件或陣列的內容。

    主體剖析後援行為」選項會決定如果 AWS WAF 無法完全剖析 JSON 主體時會發生什麼作用:

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

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

    • 匹配-將 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。

  2. 擷取 JSON 元素 — 根據您的設定 AWS WAF 識別要檢查的 JSON 元素子集:

    • 選項 JSON 匹配範圍指定 AWS WAF 應檢查的 JSON 元素的類型。

      您可以為鍵和指定「鍵」、「值」或「全部」。

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

    • 要檢查的「內容」選項指定如何篩選元素集為您 AWS WAF 要檢查的子集。

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

      • 完整的 JSON 內容-評估所有元素。

      • 僅包含的元素-僅評估其路徑符合您提供的 JSON 指針條件的元素。請勿使用此選項來指示 JSON 中的所有路徑。而是使用完整的 JSON 內容

        如需 JSON 指標語法的相關資訊,請參閱網際網路工程工作小組 (IETF) 文JavaScript 件物件標記法 (JSON) 指標

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

        /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,密鑰(屬於包含元素路徑的一部分)不進行評估。

    • 全部ef,g

    • 按鍵ef

    • 價值觀g

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