本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS WAF 規則
一個AWS WAF規則會定義如何檢查 HTTP (S) Web 要求,以及符合檢查準則時要對要求採取的動作。您只能在規則群組或 Web ACL 的前後關聯中定義規則。
規則不會自行存在於 AWS WAF。他們不是AWS資源,他們沒有亞馬遜資源名稱(ARN)。您可以在定義規則的規則群組或 Web ACL 中依名稱存取規則。您可以使用規則群組的 JSON 檢視或包含規則的 Web ACL,來管理規則並將其複製到其他 Web ACL。您也可以透過AWS WAF主控台規則產生器,可供 Web ACL 和規則群組使用。
規則名稱
每個規則都需要一個名稱。避免名稱開頭為AWS
以及用於由其他服務為您管理的規則群組或規則的名稱。請參閱 由其他服務提供的規則群組。
注意
如果您變更規則的名稱,並希望規則的量度名稱反映變更,您也必須更新量度名稱。AWS WAF變更規則名稱時,不會自動更新規則的度量名稱。您可以在主控台中編輯規則時,使用規則 JSON 編輯器變更量度名稱。您也可以透過 API 和任何用來定義 Web ACL 或規則群組的 JSON 清單中變更名稱。
規則陳述式
每個規則還需要規則語句來定義規則檢查 Web 請求的方式。視規則和陳述式類型而定,規則陳述式可能包含任何深度的其他巢狀陳述式。有些規則陳述式會採用一組準則。例如,您可以為 IP 集比對規則指定最多 10,000 個 IP 位址或 IP 位址範圍。
您可以定義檢查條件的規則,如下所示:
-
指令碼可能為惡意。攻擊者可以利用 web 應用程式的漏洞內嵌指令碼。這稱為跨網站指令碼 (XSS)。
-
發出請求的 IP 地址或地址範圍。
-
發出請求的國家/地區或地理位置。
-
請求的指定部分的長度,例如查詢字符串。
-
SQL 程式碼可能為惡意。攻擊者會藉由內嵌惡意 SQL 程式碼於 web 請求中,嘗試從您的資料庫碼擷取資料。此稱為 SQL Injection。
-
字串會出現在請求,例如出現在
User-Agent
標頭的值或出現在查詢字串的文字字串。您也可以使用規則運算式 (regex) 指定這些字串。 -
Web ACL 中先前規則已新增至請求的標籤。
除了具有 Web 請求檢查條件的語句之外,例如前面列表中的語句之外,AWS WAF支援邏輯陳述式AND
,OR
,以及NOT
您用來合併規則中的陳述式。
例如,根據您最近從攻擊者看到的要求,您可能會使用邏輯建立規則AND
結合下列巢狀陳述式的陳述式:
-
來自 192.0.2.44 的請求。
-
在
User-Agent
標頭中包含BadBot
值。 -
它們好像有包含類似 SQL 程式碼的查詢字串。
在這種情況下,Web 請求需要匹配所有語句才能匹配頂級AND
。