本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Regex 比對條件
注意
這是AWS WAF 經典文檔。只有在您在 2019 年 11 月 AWS WAF 之前建立了規則和 Web ACL 等 AWS WAF 資源,但尚未將資源移轉至最新版本時,才應使用此版本。若要移轉資源,請參閱 將您的 AWS WAF 傳統資源遷移到 AWS WAF。
如需的最新版本 AWS WAF,請參閱AWS WAF。
如果您想根據請求裡出現符合規則運算式 (regex) 模式的字串,允許或封鎖 web 請求,請建立一個或多個 Regex 比對條件。正則表達式匹配條件是一種字符串匹配條件的類型,用於標識要搜索的模式以及您希望 C AWS WAF lassic 檢查模式的 Web 請求的一部分,例如指定的標頭或查詢字符串。稍後,當您建立 Web ACL,您需要指定是否要允許或封鎖含有這些模式的請求。
建立 Regex 比對條件
當您建立 Regex 比對條件,您需指定模式集以識別您想搜尋的字串 (使用規則運算式)。然後,您可以將這些模式集添加到過濾器中,該過濾器指定您希望 C AWS WAF lassic 檢查該模式集的 Web 請求部分,例如 URI 或查詢字符串。
您可以將多個規則運算式增至單一模式集中。若您這麼做,這些運算式會與 OR 結合。如此,如果請求符合清單中的任一個運算式,web 請求將比對模式集。
當您將正則表達式匹配條件添加到規則時,也可以配置 C AWS WAF lassic 以允許或阻止與條件中的值不匹配的 Web 請求。
AWS WAF 經典支持大多數標準的 Perl 兼容正則表達式(PCRE)
Backreferences 和擷取子運算式
任意零寬度宣告
子程式參考和遞迴模式
條件式模式
恢復控制動詞
\C 單一位元組指令
\R 換行比對指令
\K 開頭比對重設指令
圖說文字和內嵌的程式碼
原子分組和所佔有的量詞
建立 regex 比對條件
請登入 AWS Management Console 並開啟 AWS WAF 主控台,網址為 https://console.aws.amazon.com/wafv2/
。 如果您在導覽窗格中看到 [切換到 AWS WAF 傳統],請選取它。
在導覽窗格中選擇字串和 regex 比對。
選擇 Create condition (建立條件)。
指定適用的篩選條件設定。如需詳細資訊,請參閱 您在建立或編輯 RegEx 符合條件時指定的值。
選擇建立模式集和新增篩選條件 (如果您建立了新的模式集) 或新增篩選條件,如果您是使用現有的模式。
選擇建立。
您在建立或編輯 RegEx 符合條件時指定的值
在建立或更新 Regex 比對條件時,請指定以下的值:
- 名稱
輸入 Regex 比對條件的名稱。名稱僅能含有英數字元 (A-Z、a-z、0-9) 或以下特殊字元:_-!"#`+*},./。條件的名稱在建立後無法變更。
- Type
選擇 Regex match (Regex 比對)。
- 要篩選的請求部分是
選擇您希望 C AWS WAF lassic 檢查您在值中指定的模式以匹配的每個 Web 請求的部分:
- 標頭
指定的請求標頭,例如,
User-Agent
或Referer
標頭。如果您選擇標頭,請在標頭欄位裡指定標頭的名稱。- HTTP 方法
HTTP 方法,指出要求來源執行的作業類型。CloudFront 支援下列方法:
DELETE
GET
、HEAD
、OPTIONS
、PATCH
、POST
、和PUT
。- 查詢字串
出現在
?
字元後的 URL 部分 (如果有)。- URI
要求的 URI 路徑,可識別資源,例如
/images/daily-ad.jpg
。這不包括 URI 的查詢字串或片段元件。如需詳細資訊,請參閱統一資源識別元 (URI):一般語法。 除非指定了轉換,否則 URI 不會被標準化,並且會像從客戶端 AWS 接收它作為請求的一部分一樣進行檢查。Transformation (轉換) 將如指定重新格式化 URI。
- Body
部分的請求內容含有您想傳送至您的 web 伺服器做為 HTTP 請求內文的額外資料,您要傳送到您的 Web 伺服器的 HTTP 請求的內文,例如資料表單。
注意
如果您選擇 [內文] 做為要篩選之要求的部分值, AWS WAF 典型只會檢查前 8192 個位元組 (8 KB)。若要允許或封鎖主體超過 8192 個位元組的要求,您可以建立大小限制條件。(AWS WAF 經典從請求頭獲取主體的長度。) 如需詳細資訊,請參閱 使用容量限制條件。
- 單一查詢參數 (僅數值)
任何您已定義做為部分查詢字串的參數。例如,如果網址是「www.xyz.com」UserName = ABC& SalesRegion = 西雅圖」,您可以將過濾器添加到或參數中。UserNameSalesRegion
如果重複的參數顯示在查詢字串上,則數值評估則為「OR」。也就是說,將會觸發符合的值。例如,在網址「www.xyz.com? SalesRegion =boston& = SalesRegion 西雅圖」中,匹配「要匹配的值」中的「波士頓」或「西雅圖」模式將觸發匹配。
如果您選擇單一查詢參數 (僅數值),您也可以指定查詢參數名稱。這是您要檢查的查詢字串中的參數,例如UserName或SalesRegion。查詢參數名稱的長度上限為 30 個字元。查詢參數名稱 不區分大小寫。例如,您指定UserName為查詢參數名稱,這將匹配的所有變體 UserName,例如用戶名和用戶名。
- 所有的查詢參數 (僅數值)
類似於 S ingle 查詢參數 (僅限值),而不是檢查單一參數的值,C AWS WAF lassic 會檢查查詢字串內所有參數的值,以找出要比對的「值」中指定的模式。例如,在網址「www.xyz.com? UserName =abc& = SalesRegion 西雅圖」中,要比對的值中的一個模式,該模式符合或中的值將觸發匹配。UserNameSalesRegion
- 標頭 (只有當「部分請求的篩選條件」為「標頭」時)
如果您從要篩選清單的要求部分中選擇 [標頭],請從通用標頭清單中選擇標頭,或輸入您希望 C AWS WAF lassic 檢查的標頭名稱。
- 轉換
轉換會在 AWS WAF 傳統檢查要求之前重新格式化 Web 要求。這消除了攻擊者在 Web 請求中使用的一些不尋常的格式,以便繞過 C AWS WAF lassic。
您只能指定一種文字轉換類型。
轉換可執行下列操作:
- 無
AWS WAF Classic 在檢查 Val ue 中是否有要匹配的字符串之前,不會對 Web 請求執行任何文本轉換。
- 轉換成小寫
AWS WAF 經典將大寫字母(A-Z)轉換為小寫(a-z)。
- HTML 解碼
AWS WAF 經典用未編碼字符替換 HTML 編碼的字符:
將
"
換成&
以非中斷空格取代
將
<
換成<
將
>
換成>
將表示為十六進位格式的字元
&#xhhhh;
以對應字元取代將表示為十進位格式的字元
&#nnnn;
以對應字元取代
- 標準化空格
AWS WAF 經典用空格字符(十進制 32)替換以下字符:
\f、跳頁、小數 12
\t、標籤、小數 9
\n、換行,小數 10
\r、換行、小數 13
\v、垂直標籤,小數 11
非中斷空格,小數 160
此外,此選項將數個空格取代為一個空格。
- 簡化命令列
若您將擔心攻擊者插入作業命令列命令,或使用不尋常的格式偽裝某些或所有命令,請使用此選項執行下列轉換:
刪除以下字元:\ " ' ^
刪除以下字元前的空格:/ (
將以下字元取代為空格:, ;
將數個空格取代為一個空格
將所有大寫字母 (A-Z) 轉換成小寫 (a-z)
- URL 解碼
解碼 URL 編碼請求。
- 比對請求的 Regex 模式
-
您可以選擇現有的模式集,或建立新的。如果您建立新的模式集指定以下:
- 新模式集的名稱
輸入名稱,然後指定要 C AWS WAF lassic 搜尋的正則運算式模式。
如果您新增多個規則運算式至模式集,這些運算式會與 OR 結合。如此,如果請求符合清單中的任一個運算式,web 請求將比對模式集。
符合值 的長度上限為 70 個字元。
編輯 Regex 比對條件
您可以使用下列變更現有的 regex 比對條件:
刪除現有模式集裡的模式
新增模式至現有的模式集
從現有的 Regex 比對條件刪除篩選條件
將過濾器添加到現有的正則表達式匹配條件(在正則表達式匹配條件中只能有一個過濾器。 因此,若要新增篩選器,您必須先刪除現有的篩選器。)
刪除現有的 Regex 比對條件
注意
您不能從現有篩選條件新增或刪除模式集。您必須編輯模式集、或刪除篩選條件並建立新的篩選條件與其新的模式集。
刪除現有模式集裡的模式
請登入 AWS Management Console 並開啟 AWS WAF 主控台,網址為 https://console.aws.amazon.com/wafv2/
。 如果您在導覽窗格中看到 [切換到 AWS WAF 傳統],請選取它。
在導覽窗格中選擇字串和 regex 比對。
選擇檢視 Regex 模式集。
選擇您要編輯的模式集名稱。
選擇編輯。
在您要刪除的模式旁,選擇 X。
選擇儲存。
新增模式至現有的模式集
請登入 AWS Management Console 並開啟 AWS WAF 主控台,網址為 https://console.aws.amazon.com/wafv2/
。 如果您在導覽窗格中看到 [切換到 AWS WAF 傳統],請選取它。
在導覽窗格中選擇字串和 regex 比對。
選擇檢視 Regex 模式集。
選擇要編輯的模式集名稱。
選擇編輯。
輸入新的 Regex 模式。
選擇新的模式旁的 +。
選擇儲存。
從現有的 Regex 比對條件刪除篩選條件
請登入 AWS Management Console 並開啟 AWS WAF 主控台,網址為 https://console.aws.amazon.com/wafv2/
。 如果您在導覽窗格中看到 [切換到 AWS WAF 傳統],請選取它。
在導覽窗格中選擇字串和 regex 比對。
選擇您要刪除的篩選條件的比對條件名稱。
選擇您要刪除篩選條件旁的方塊。
選擇刪除篩選條件。
刪除 Regex 比對條件
請登入 AWS Management Console 並開啟 AWS WAF 主控台,網址為 https://console.aws.amazon.com/wafv2/
。 如果您在導覽窗格中看到 [切換到 AWS WAF 傳統],請選取它。
從 Regex 比對條件刪除篩選條件。請參閱 從現有的 Regex 比對條件刪除篩選條件 以取得執行此動作的指示。)
從使用該 Regex 比對條件的規則中移除該條件:
在導覽窗格中,選擇規則。
選擇要刪除使用該 Regex 比對條件的規則名稱。
在右窗格中選擇編輯規則。
在您要刪除的條件旁,選擇 X。
選擇更新。
對所有剩下要刪除使用該 Regex 比對條件的規則,重複步驟。
在導覽窗格中選擇字串和 regex 比對。
選擇您要刪除條件旁的按鈕。
選擇刪除。
從現有的 Regex 比對條件新增或變更篩選條件
Regex 比對條件只能擁有一個篩選條件。如果您想新增或變更篩選條件,您必須先刪除現有的篩選條件。
請登入 AWS Management Console 並開啟 AWS WAF 主控台,網址為 https://console.aws.amazon.com/wafv2/
。 如果您在導覽窗格中看到 [切換到 AWS WAF 傳統],請選取它。
從您想變更的 Regex 條件刪除篩選條件:請參閱 從現有的 Regex 比對條件刪除篩選條件 以取得執行此動作的指示。)
在導覽窗格中選擇字串和 regex 比對。
選擇您要變更的條件名稱。
選擇新增篩選條件。
為新的篩選條件輸入適當的值,然後選擇新增。