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

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

文字轉換

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

當您將此選項與 JSON 主體要求元件選取搭配使用時,會在剖析並擷取要從 JSON 檢查的元素之後AWS WAF套用您的轉換。如需詳細資訊,請參閱 正文

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

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

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

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

  • API 陳述式內容TextTransformations

文字轉換的選項

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

Base64 decode – BASE64_DECODE

AWS WAF解碼一個以 BAS64 編碼的字符串。

Base64 decode extension – BASE64_DECODE_EXT

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

Command line – CMD_LINE

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

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

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

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

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

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

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

Compress whitespace – COMPRESS_WHITE_SPACE

AWS WAF以一個空格取代多個空格,並以空格字元 (ASCII 32) 取代下列字元,以壓縮空格:

  • 進紙 (12)

  • 標籤頁 (ASCII 碼 9)

  • 新行 (十字军)

  • 回車符號

  • 「垂直」頁籤 (11)

  • 非中斷空格

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以相應的字元取代以十六進位格式&#xhhhh;或十進位格&#nnnn;式表示的字元。

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,則會使用較高的位元組來偵測並調整較低的位元組。如果不是,則只會使用較低的位元組,並將較高的位元組歸零,而這可能導致資訊遺失。

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 nulls – REMOVE_NULLS

AWS WAF從輸入中刪除所有NULL字節。

Replace comments – REPLACE_COMMENTS

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

Replace nulls – REPLACE_NULLS

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

SQL hex decode – SQL_HEX_DECODE

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

URL decode – URL_DECODE

AWS WAF解碼 URL 編碼的值。

URL decode Unicode – URL_DECODE_UNI

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

UTF8 to Unicode – UTF8_TO_UNICODE

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