請求元件選項 - AWS WAF、AWS Firewall Manager 與 AWS Shield Advanced

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

請求元件選項

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

除非另有說明,否則如果 Web 要求不包含在規則陳述式中指定的 request 元件,則要求會產生與規則不相符。

注意

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

所以此AWS WAF主控台和 API 文件會在下列位置提供請求元件設定的指引:

  • 規則建置器在主控台上 — 在Statement一般規則類型的設定,請選擇您要檢查的元件檢查對話請求元件

  • API 陳述式內容FieldToMatch

本節的其餘內容會說明用於要檢查的 Web 請求。

單頭

檢查請求中的單個命名標頭。對於此選項,您可以在標頭欄位名稱,例如,User-Agent或者Referer

所有標題

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

  • 相符模式— 用來取得標頭子集以進行檢查的篩選器。AWS WAF在標題鍵中查找這些模式。

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

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

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

    • 包括頭— 僅檢查具有與您在此處指定之一字串相符的索引鍵的標頭。密鑰的字符串匹配區分大小寫,並且必須完全相符。

  • 符合範圍— 標題的部分AWS WAF應與規則檢查標準進行檢查。您可以指定金鑰Values (數值), 或All (全部)對於鍵和值。

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

Cookie

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

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

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

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

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

    • 內含 Cookie— 僅檢查具有與您在此處指定之一字串相符的索引鍵的 Cookie。密鑰的字符串匹配區分大小寫,並且必須完全相符。

  • 符合範圍— 餅乾的部分AWS WAF應與規則檢查標準進行檢查。您可以指定金鑰Values (數值), 或All (全部)對於鍵和值。

  • 超大處理— 操作AWS WAF應該處理包含大於 Cookie 數據的請求AWS WAF可以檢查。您最多可以檢查請求 Cookie 的前 8 KB (8,192 位元組),最多可以檢查前 200 個 Cookie。內容可供檢查AWS WAF最多達到第一個限制。您可以選擇繼續檢驗,或跳過檢驗並將請求標示為符合或不符合規則。如需處理超大內容的詳細資訊,請參閱請求組件的超大處理

單一查詢參數

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

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

如果查詢字串包含您指定之查詢引數的多個執行個體,AWS WAF檢查匹配的所有值,使用OR邏輯。例如,在 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 新增至基本成本。

URI 路徑

檢查 URL 識別資源的一部分,例如/images/daily-ad.jpg。如需相關資訊,請參閱「」。統一資源識別符 (URI):泛型語法

如果您不使用搭配此選項的文字轉換,則 AWS WAF 不會將 URI 標準化並檢查它,就像在請求中從用戶端接收它一樣。如需文字轉換的詳細資訊,請參閱文字轉換

查詢字串

檢查出來的 URL 部分?字元 (如果有的話)。

注意

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

Body

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

緊接在請求的請求。它包含 Web 請求所需的任何其他資料,例如,來自表單的資料。

  • 在控制台中,您可以在請求選項選擇Body (本文),透過選取內容類型選擇純文字

  • 在 API 中,在規則的FieldToMatch規格,您指定Body檢查請求內文為純文本。

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

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

正文

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

緊接在請求的請求。它包含 Web 請求所需的任何其他資料,例如,來自表單的資料。

  • 在控制台中,您可以在請求選項選擇Body (本文),透過選取內容類型選擇JSON

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

您必須為此元件類型指定過大處理。您可以檢查請求內文的前 8 KB (8,192 位元組)。超大處理定義了如何AWS WAF處理具有大於主體資料的要求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將規則動作套用至請求。

    • NOT 比對- 將 Web 請求視為與規則陳述式不相符。

    AWS WAF盡力剖析整個 JSON 內文,但可能會因為無效字元、重複索引鍵、截斷以及根節點不是物件或陣列的任何內容而被迫停止。

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

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

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

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

  • 符合範圍— JSON 中元素的類型AWS WAF應檢查。您可以指定金鑰Values (數值), 或All (全部)對於鍵和值。

  • 檢查的內容— 您想要的解析和提取 JSON 中的元素AWS WAF檢查。

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

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

    • 僅包含的元素-僅評估 JSON 中符合您提供的 JSON 指標準則的元素。如需 JSON 指標語法的資訊,請參閱 Internet Engineering Task Force (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 的匹配範圍:ef,g

  • 對於設置為鍵的匹配範圍:ef

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

HTTP 方法

檢查要求的 HTTP 方法。HTTP 方法會指出要求 Web 請求來源執行的操作類型。