本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
請求元件 AWS WAF
本節說明您可以指定用於檢查的 Web 要求元件。您可以為尋找 Web 請求中的模式的匹配規則語句指定請求組件。這些類型的語句包括字符串匹配,正則表達式匹配,大小約束和SQL注入攻擊語句。如需如何使用這些要求元件設定的詳細資訊,請參閱個別規則陳述式:使用比對規則陳述式 AWS WAF
除非另有說明,否則如果 Web 請求沒有在規則語句中指定的請求組件, AWS WAF 將請求評估為不符合規則準則。
注意
您可以為每個需要它的規則陳述式指定單一請求元件。若要檢查請求的多個元件,請為每個元件建立規則陳述式。
所以此 AWS WAF 主控台和API說明文件會在下列位置提供要求元件設定的指引:
-
主控台上的規則產生器 — 在一般規則類型的陳述式設定中,在 [請求元件] 下的 [檢查] 對話方塊中選擇您要檢查的元件。
-
API聲明內容 —
FieldToMatch
本節的其餘部分描述了要檢查的 Web 請求部分的選項。
HTTP方法
檢查請求的HTTP方法。該HTTP方法指出 Web 請求要求受保護的資源執行的操作類型,例如POST
或GET
。
單一標頭
檢查請求中的單個命名標頭。
對於此選項,您可以指定標頭名稱,例如,User-Agent
或Referer
。名稱的字串比對不區分大小寫。
所有標題
檢查所有要求標頭,包括 Cookie。您可以套用篩選器來檢查所有標頭的子集。
對於此選項,您可以提供下列規格:
-
匹配模式 — 用於獲取標題子集以進行檢查的過濾器。 AWS WAF 在標題鍵中查找這些模式。
比對模式設定可以是下列其中一種:
-
全部 — 匹配所有鍵。評估所有標題的規則檢查條件。
-
排除的標頭 — 僅檢查其金鑰不符合您在此處指定的任何字串的標頭。鍵的字符串匹配不區分大小寫。
-
包含的標頭 — 僅檢查具有與您在此處指定的其中一個字串相符的索引鍵的標頭。鍵的字符串匹配不區分大小寫。
-
-
匹配範圍-標題的部分 AWS WAF 應與規則檢查標準進行檢查。您可以指定 [索引鍵]、[值] 或 [全部] 來檢查相符項目的索引鍵和值。
A@@ ll 並不需要在鍵中找到匹配項,並在值中找到匹配項。它需要在鍵或值或兩者中找到匹配。若要在索引鍵和值中要求相符項目,請使用邏輯
AND
陳述式來組合兩個比對規則,一個會檢查索引鍵,另一個會檢查這些值。 -
超大處理 — 如何 AWS WAF 應該處理具有大於標題數據的請求 AWS WAF 可以檢查。 AWS WAF 最多可以檢查請求標頭的前 8 KB(8,192 字節),最多可以檢查前 200 個標頭。內容可供檢查 AWS WAF 最多達到第一個限制。您可以選擇繼續檢驗,或跳過檢驗並將請求標示為符合或不符合規則。如需有關處理過大內容的詳細資訊,請參閱處理過大的 Web 請求組件 AWS WAF。
表頭順序
檢查包含請求標題名稱列表的字符串,按照 Web 請求中出現的順序進行排序 AWS WAF 接收進行檢查。 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。密鑰的字符串匹配區分大小寫,並且必須完全相符。
-
-
匹配範圍-餅乾的部分 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並完全按照從請求中從客戶端接收到它的方式進行檢查。如需有關文字轉換的資訊,請參閱在中使用文字轉換 AWS WAF。
JA3指紋
檢查請求的JA3指紋。
注意
JA3指紋檢測僅適用於 Amazon CloudFront 分發和應用程式負載平衡器。
指JA3紋是從傳入要求的TLS用戶端 Hello 衍生出來的 32 個字元的雜湊。此指紋可做為用戶端TLS組態的唯一識別碼。 AWS WAF 針對具有足夠TLS用於計算的 Client Hello 資訊的每個要求,計算並記錄此指紋。幾乎所有的 Web 請求都包含此信息。
如何獲取客戶端的JA3指紋
您可以從 Web ACL 日誌中獲取客戶端請求的JA3指紋。If AWS WAF 能夠計算指紋,它將其包含在日誌中。如需有關記錄欄位的資訊,請參閱網路ACL流量的記錄欄位。
規則陳述式需求
您只能在字串 match 陳述式中檢查JA3指紋,該陳述式設定為完全符合您提供的字串。在字串 match 陳述式規格中提供記錄中的JA3指紋字串,以符合任何 future 具有相同TLS組態的要求。如需有關字串 match 陳述式的資訊,請參閱字串比對規則陳述式。
您必須為此規則陳述式提供後援行為。後援行為是您想要的比對狀態 AWS WAF 如果分配給 Web 請求 AWS WAF 無法計算指JA3紋。如果你選擇匹配, AWS WAF 會將要求視為符合規則陳述式,並將規則動作套用至要求。如果你選擇不匹配, AWS WAF 會將要求視為不符合規則陳述式。
要使用此匹配選項,您必須記錄您的網絡ACL流量。如需相關資訊,請參閱 日誌 AWS WAF 網路ACL流量。
查詢字串
檢查?
字元之後出現URL的部分 (如果有的話)。
注意
對於跨網站指令碼比對陳述式,建議您選擇 [所有查詢參數],而不是 [查詢字串]。選擇「所有查詢參數」會增加 10 WCUs 至基本成本。
單一查詢參數
檢查您已定義為查詢字串一部分的單一查詢參數。 AWS WAF 檢查您指定的參數值。
對於此選項,您也可以指定 Query 引數。例如,如果URL是www.xyz.com?UserName=abc&SalesRegion=seattle
,則可以SalesRegion
為查詢引數指定UserName
或。引數名稱的最大長度為 30 個字元。名稱不區分大小寫,因此如果您指定UserName
, AWS WAF 匹配的所有變體UserName
,包括username
和UsERName
。
如果查詢字串包含您所指定之查詢引數的多個執行個體, AWS WAF 檢查匹配的所有值,使用 OR 邏輯。例如 URLwww.xyz.com?SalesRegion=boston&SalesRegion=seattle
,在 AWS WAF 評估您針對boston
和指定的名稱seattle
。如果其中一個相符,則檢查會是相符。
所有查詢參數
檢查請求中的所有查詢參數。這類似於單一查詢參數元件選擇,但 AWS WAF 檢查查詢字串內所有引數的值。例如,如果URL是www.xyz.com?UserName=abc&SalesRegion=seattle
, AWS WAF
如果的值UserName
或符合檢驗條件,則觸發SalesRegion
相符項目。
選擇此選項會增WCUs加 10 個基本成本。
Body
檢查請求主體,評估為純文本。您也可以JSON使用評估本體 JSON 內容類型。
要求主體是緊接在要求標頭之後的要求的一部分。它包含 Web 請求所需的任何其他數據,例如,來自表單的數據。
-
在控制台中,您可以在「請求」選項選擇「主體」下選擇「內容類型」選擇「純文本」選擇。
-
在規則的
FieldToMatch
規格中API,您可Body
以指定以純文字檢查要求主體。
應用程式負載平衡器和 AWS AppSync, AWS WAF 可以檢查請求主體的前 8 KB。默認情況下 CloudFront,對於API網關,Amazon Cognito,應用程序運行器和驗證訪問, AWS WAF 可以檢查前 16 KB,並且您可以在 Web ACL 配置中將限制增加到 64 KB。如需詳細資訊,請參閱管理的車身檢查尺寸限制 AWS WAF。
您必須為此元件類型指定過大處理。超大處理定義了如何 AWS WAF 處理具有大於主體資料的要求 AWS WAF 可以檢查。您可以選擇繼續檢驗,或跳過檢驗並將請求標示為符合或不符合規則。如需有關處理過大內容的詳細資訊,請參閱處理過大的 Web 請求組件 AWS WAF。
您也可以將身體評估為已解析JSON。如需相關資訊,請參閱下一節。
JSON身體
檢查請求主體,評估為JSON。您也可以將本文評估為純文字。
要求主體是緊接在要求標頭之後的要求的一部分。它包含 Web 請求所需的任何其他數據,例如,來自表單的數據。
-
在主控台中,您可以在「請求」選項選擇「主體」下選取此選項,方法是選取「內容類型」選項JSON。
-
在規則的
FieldToMatch
規格中,您可以指定JsonBody
。API
應用程式負載平衡器和 AWS AppSync, AWS WAF 可以檢查請求主體的前 8 KB。默認情況下 CloudFront,對於API網關,Amazon Cognito,應用程序運行器和驗證訪問, AWS WAF 可以檢查前 16 KB,並且您可以在 Web ACL 配置中將限制增加到 64 KB。如需詳細資訊,請參閱管理的車身檢查尺寸限制 AWS WAF。
您必須為此元件類型指定過大處理。超大處理定義了如何 AWS WAF 處理具有大於主體資料的要求 AWS WAF 可以檢查。您可以選擇繼續檢驗,或跳過檢驗並將請求標示為符合或不符合規則。如需有關處理過大內容的詳細資訊,請參閱處理過大的 Web 請求組件 AWS WAF。
選擇此選項會使 match 陳述式的基本成本加倍WCUs。例如,如果 match 語句的基本成本是 5 WCUs 而不進行JSON解析,則使用JSON解析將成本加倍為 10 WCUs。
對於此選項,您可以提供其他規格,如下一節所述。
方法 AWS WAF 處理JSON身體檢查
當 AWS WAF 檢查 Web 請求主體JSON,因為它執行步驟來解析主體並提取要檢查的JSON元素。 AWS WAF 根據您的組態選擇執行這些步驟。
以下列出了這些步驟 AWS WAF 執行。
-
解析正文內容 — AWS WAF 解析 Web 請求主體的內容,以便提取要檢查的JSON元素。 AWS WAF 盡力解析主體的全部內容,但解析可能會因內容中的各種錯誤狀態而失敗。範例包括無效字元、重複索引鍵、截斷,以及根節點不是物件或陣列的內容。
選項主體解析後備行為決定什麼 AWS WAF 如果它無法完全解析JSON主體,則會執行以下操作:
-
無 (預設行為)- AWS WAF 只會評估內容,直到遇到解析錯誤的時間點為止。
-
評估為字符串-檢查正文為純文本。 AWS WAF 將為檢驗定義的文字轉換和檢JSON驗準則套用至本文字串。
-
匹配-將 Web 請求視為與規則語句匹配。 AWS WAF 將規則動作套用至請求。
-
不匹配-將 Web 請求視為與規則語句不匹配。
注意
此後援行為只會在下列情況下觸發 AWS WAF 剖析JSON字串時遇到錯誤。
解析未完全驗證 JSON
AWS WAF 解析不會完全驗證輸入JSON字符串,因此即使無效,解析也可以成功JSON。
例如 AWS WAF 解析以下無效JSON而沒有錯誤:
-
缺失逗號:
{"key1":"value1""key2":"value2"}
-
缺失冒號:
{"key1":"value1","key2""value2"}
-
額外冒號:
{"key1"::"value1","key2""value2"}
對於解析成功但結果不完全有效的情況下JSON,評估中後續步驟的結果可能會有所不同。擷取可能會遺漏某些元素,或規則評估可能會產生非預期的結果。我們建議您驗證您在JSON應用程式中收到的資訊,並視需JSON要處理無效。
-
-
提取JSON元素 — AWS WAF 根據您的設定識別要檢查的JSON元素子集:
-
該選項JSON匹配範圍指定的元素JSON的類型 AWS WAF 應該檢查。
您可以為鍵和值指定「鍵」、「值」或「全部」。
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
,不評估密鑰(屬於包含元素路徑的一部分)。-
全部:
e
、f,
和g
。 -
按鍵:
e
和f
。 -
價值觀:
g
。
-
-
檢查JSON元素集- AWS WAF 會將您指定的任何文字轉換套用至擷取的元JSON素,然後將結果元素集與規則陳述式的符合條件比對。這與其他 Web 要求元件的轉換和評估行為相同。如果有任何擷取的JSON元素相符,則 Web 要求就會與規則相符。