文字轉換 - AWS WAF、AWS Firewall Manager 與 AWS Shield Advanced

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

文字轉換

在尋找模式或設定條件約束的陳述式中,您可以提供要 AWS WAF 在檢查請求之前套用的轉換。轉換會將 Web 請求重新格式化,以避免攻擊者用來試圖略過 AWS WAF 的某些異常格式。

當您將此選項與 JSON 主體要求元件選取搭配使用時,AWS WAF在解析和提取要從 JSON 檢查的元素後應用您的轉換。如需詳細資訊,請參閱前一節,正文

如果您提供多個轉換,您也可以設定讓 AWS WAF 套用它們的順序。

WCU— 每個文字轉換都是 10 個 WCU。

AWS WAF 主控台和 API 文件也會在下列位置提供這些設定的指引:

  • 規則建置器在主控台上 —文字轉換。當您使用請求元件時,此選項可供使用。

  • API 陳述式內容TextTransformations

文字轉換的選項

Base64 解碼

AWS WAF解碼 Base64 編碼字串。

Base64 解碼分機

AWS WAF解碼一個 Base64 編碼的字符串,但使用一個寬容的實現忽略無效的字符。

命令列

此選項可減輕攻擊者可能會注入作業系統命令列命令,並使用不尋常的格式來掩飾部分或全部指令的情況。

使用此選項可執行下列轉換:

  • 刪除以下字元:\ " ' ^

  • 刪除以下字元前的空格:/ (

  • 將以下字元取代為空格:, ;

  • 將數個空格取代為一個空格

  • 將大寫字母 A-Z 轉換成小寫字母 a-z

壓縮空格

AWS WAF 會以一個空格替換多個空格,並用空格字元 (小數 32) 替換以下字元:

  • \f、換頁、小數 12

  • \t、Tab 鍵、小數 9

  • \n、換行,小數 10

  • \r、換行、小數 13

  • \v、垂直標籤、小數 11

  • 非中斷空格,小數 160

CSS 解碼

AWS WAF解碼使用 CSS 2.x 轉義規則編碼的字符syndata.html#characters。此函數在解碼過程中使用最多兩個字節,因此它可以幫助您發現使用 CSS 編碼編碼的 ASCII 字符,這些字符通常不會被編碼。它在反擊逃避,這是一個反斜杠和非十六進制字符的組合也很有用。例如,JA\ 對於 JavaScript。

逸出序列解碼

AWS WAF解碼以下 ANSI C 轉義序列:\a, \b, \f, \n, \r, \t, \v, \\, \?, \', \", \xHH (hexadecimal), \0OOO (octal)。 無效的編碼會保留在輸出中。

十六進位解碼

AWS WAF將十六進制字符串解碼為二進制。

HTML 實體解碼

AWS WAF 使用未編碼字元取代 HTML 編碼字元:

  • " 換成 "

  • 以不分行的空格取代  ,小數 160

  • &lt; 換成 <

  • &gt; 換成 >

  • 將表示為十六進位格式的字元 &#xhhhh; 以對應字元取代

  • 將表示為十進位格式的字元 &#nnnn; 以對應字元取代

JS 解碼

AWS WAF解碼 JavaScript 逸出序列。如果\uHHHH代碼是在全寬的 ASCII 碼範圍內FF01-FF5E,則使用較高的字節來檢測和調整較低的字節。如果不是,則只會使用較低的位元組,並將較高的位元組歸零,從而導致可能遺失資訊。

小寫

AWS WAF 將所有大寫字母 (A-Z) 轉換成小寫 (a-z)。

MD5

AWS WAF從輸入中的資料計算 MD5 雜湊值。計算出的散列是原始二進制形式。

AWS WAF會檢查收到的 Web 請求,而不會進行任何文字轉換。

標準化路徑

AWS WAF從輸入字串中移除不在輸入開頭的多個斜線、目錄自我參照和目錄反向參照。

標準化路徑勝

AWS WAF像這樣的處理NORMALIZE_PATH,但首先將反斜線字元轉換為正斜線。

移除 null

AWS WAFRemove AllNULL來自輸入的字節。

取代評論

AWS WAF用單個空格替換每次出現的 C 風格註釋(/*... */)。它不會壓縮多個連續出現的次數。它用空格(ASCII 0x20)替換未終止的註釋。它不會更改評論的獨立終止(*/)。

取代 null

AWS WAF取代NULL輸入中包含空格字元的位元組 (ASCII 0x20)。

SQL 十六進位解碼

AWS WAF解碼 SQL 十六進制數據。例如,(0x414243) 已解碼為 (ABC

URL 解碼

AWS WAF解碼經過 URL 編碼的值。

URL 解碼

LIKEURL_DECODE,但支援特定於微軟%uENCODE encoding。如果代碼在全寬 ASCII 碼範圍內FF01-FF5E,較高的字節用於檢測和調整較低的字節。否則,只會使用較低的位元組,而較高的位元組會歸零。

UTF8 轉換為 Unicode

AWS WAF將所有 UTF-8 字符序列轉換為統一碼。這有助於輸入規範化,並最大限度地減少非英語語言的誤報和誤報。