View a markdown version of this page

在 中使用文字轉換 AWS WAF - AWS WAF AWS Firewall Manager、 AWS Shield Advanced和 AWS Shield 網路安全主管

推出 的新主控台體驗 AWS WAF

您現在可以使用更新後的體驗,在主控台的任何位置存取 AWS WAF 功能。如需詳細資訊,請參閱使用 主控台

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

在 中使用文字轉換 AWS WAF

本節說明如何在檢查請求之前提供 AWS WAF 要套用的轉換。

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

當您搭配 JSON 內文請求元件選擇使用時, AWS WAF 會在剖析和擷取元素以從 JSON 檢查之後套用轉換。如需詳細資訊,請參閱JSON 內文

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

WCUs – 每個文字轉換都是 10 WCUs。

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

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

  • API 陳述式內容TextTransformations

文字轉換的選項

每個轉換清單會顯示主控台和 API 規格,後面接著描述。

Base64 decode – BASE64_DECODE

AWS WAF 解碼 Base64-encoded字串。

Base64 decode extension – BASE64_DECODE_EXT

AWS WAF 會解碼 Base64-encoded字串,但使用忽略無效字元的寬容實作。

Command line – CMD_LINE

此選項可緩解攻擊者可能注入作業系統命令列命令,並使用異常格式來掩飾部分或全部命令的情況。

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

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

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

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

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

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

Command line Unix – CMD_LINE_UNIX

此選項可緩解攻擊者可能注入 Unix 或 Linux 作業系統命令列命令,並使用異常格式來掩飾部分或全部命令的情況。

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

  • 刪除以下字元:\ " '

  • 以空格取代下列字元:標籤 \t(ASCII 9)、換行 \n(ASCII 10)、歸位 \r(ASCII 13)、垂直標籤 \v(ASCII 11) 和表單饋送 \f(ASCII 12)

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

  • 移除前置和結尾空格

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

Command line Windows – CMD_LINE_WIN

此選項可緩解攻擊者可能注入 Windows 作業系統命令列或 PowerShell 命令,並使用異常格式來掩飾部分或全部命令的情況。

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

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

  • 刪除換行序列,換行後接換行\n或換行和換行換行的換行\r\n,作為單一單位

  • 以空格取代下列字元:標籤 \t(ASCII 9)、換行 \n(ASCII 10)、歸位 \r(ASCII 13)、垂直標籤 \v(ASCII 11) 和表單饋送 \f(ASCII 12)

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

  • 移除前置和結尾空格

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

  • 以單一反斜線取代連續反斜線。保留單一反斜線,因此 c:\windows\system32\cmd.exe和 UNC 路徑等 Windows 路徑保持不變。

Compress whitespace – COMPRESS_WHITE_SPACE

AWS WAF 壓縮空格的方式是將多個空格取代為一個空格,並將下列字元取代為空格字元 (ASCII 32):

  • Formfeed (ASCII 12)

  • Tab (ASCII 9)

  • Newline (ASCII 10)

  • 歸位運送 (ASCII 13)

  • 垂直標籤 (ASCII 11)

  • 非中斷空間 (ASCII 160)

CSS decode – CSS_DECODE

AWS WAF 解碼使用 CSS 2.x 逸出規則 編碼的字元。 syndata.html#characters此函數在解碼過程中最多使用兩個位元組,因此它可以幫助您發現使用 CSS 編碼進行編碼的 ASCII 字元 (這些字元通常不會被編碼)。它在反擊逃脫方面也很有用,後者是反斜線和非十六進位字元的組合。例如,javascriptja\vascript

Escape sequences decode – ESCAPE_SEQ_DECODE

AWS WAF 解碼下列 ANSI C 逸出序列:\a\b\f\n\r\t、、\v\\\?\'\"、、 \xHH (十六進位)、 \0OOO (八進位)。無效的編碼會保留在輸出中。

Hex decode – HEX_DECODE

AWS WAF 會將十六進位字元字串解碼為二進位。

HTML entity decode – HTML_ENTITY_DECODE

AWS WAF &#nnnn;會使用對應的字元取代以十六進位格式&#xhhhh;或十進位格式表示的字元。

AWS WAF 會以未編碼的字元取代下列 HTML 編碼的字元。此清單使用小寫 HTML 編碼,但處理不區分大小寫,例如 &QuOt;" 視為相同。

HTML 編碼字元

取代為...

"

"

&

&

<

<

&gt;

>

&nbsp;&NonBreakingSpace;

非中斷空格,小數 160

&NewLine;

\n,十進位 10

&Tab;

\t,小數 9

&lcub;&lbrace;

{

&verbar;&vert;&VerticalLine;

|

&rcub;&rbrace;

}

&excl;

!

&num;

#

&dollar;

$

&percent;&percnt;

%

&apos;

\

&lpar;

(

&rpar;

)

&ast;&midast;

*

&plus;

+

&comma;

,

&period;

.

&sol;

/

&colon;

:

&semi;

;

&equals;

=

&quest;

?

&tilde;&DiacriticalTilde;

~

&minus;

-

&lsqb;&lbrack;

[

&bsol;

\\

&rsqb;&rbrack;

]

&hat;

^

&lowbar;&underbar;

_

&grave;&DiacriticalGrave;

`

JS decode – JS_DECODE

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

JS decode extended – JS_DECODE_EXT

AWS WAF 解碼 JavaScript 逸出序列,例如 JS_DECODE,但使用寬容實作,如此 Microsoft Windows 檔案路徑就不會改變。 與 JS_DECODE_EXT不同JS_DECODE,如下所示:

  • 透過移除反斜線並保留後續字元\"來解碼逸出 \\\'、 和 \/

  • 透過同時保留反斜線和後續字元\a\v保留單一字元逸出 \t、、\b\f\n\r、、 和 。

  • 同時保留反斜線和後續字元,以保留任何其他無法辨識的\C逸出序列 (例如 \d\w),以免\windows變更 \default和 等 Windows 檔案路徑。

Lowercase – LOWERCASE

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

MD5 – MD5

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

None – NONE

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

Normalize path – NORMALIZE_PATH

AWS WAF 透過移除不在輸入開頭的多個斜線、目錄自我參考和目錄回溯參考來標準化輸入字串。

Normalize path Windows – NORMALIZE_PATH_WIN

AWS WAF 轉換反斜線字元以轉送斜線,然後使用NORMALIZE_PATH轉換處理產生的字串。

Remove comments characters – REMOVE_COMMENTS_CHAR

AWS WAF 會從輸入中移除常見的註解字元:/*、*/、-- 和 #。

Remove nulls – REMOVE_NULLS

AWS WAF 會從輸入中移除所有NULL位元組。

Remove whitespace – REMOVE_WHITESPACE

AWS WAF 從輸入中移除所有空格字元。

Replace comments – REPLACE_COMMENTS

AWS WAF 會以單一空格取代每次出現的 C 樣式註解 (/* ... */)。它不會壓縮多個連續的出現次數。它以空格 (ASCII 0x20) 取代未終止的註解。它不會變更註解的獨立終止 (*/)。

Replace nulls – REPLACE_NULLS

AWS WAF 會以空格字元 (ASCII 0x20) NULL 取代輸入中的每個位元組。

SHA256 – SHA256

AWS WAF 從輸入中的資料計算 SHA-256 雜湊。計算出的雜湊是原始二進位形式。

SQL hex decode – SQL_HEX_DECODE

AWS WAF 解碼 SQL 十六進位資料。例如,將 (0x414243) AWS WAF 解碼為 (ABC)。

Trim – TRIM

AWS WAF 從輸入左側和右側移除空格。

Trim left – TRIM_LEFT

AWS WAF 從輸入左側移除空格。

Trim right – TRIM_RIGHT

AWS WAF 從輸入右側移除空格。

Uppercase – UPPERCASE

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

URL decode – URL_DECODE

AWS WAF 解碼 URL 編碼的值。

URL decode Unicode – URL_DECODE_UNI

與 類似URL_DECODE,但支援 Microsoft 特定的%u編碼。如果代碼是在 FF01-FF5E 的全形 ASCII 碼範圍內,則使用較高的位元組來偵測和調整較低的位元組。否則,只會使用較低的位元組,而較高的位元組會歸零。

UTF8 to Unicode – UTF8_TO_UNICODE

AWS WAF 將所有 UTF-8 字元序列轉換為 Unicode。這有助於標準化輸入,並將非英文語言的誤報和誤報降至最低。