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 剖析為個別查詢引數。這些轉換可解決剖析器差異攻擊和 HTTP 參數污染 (HPP),攻擊者會在其中編碼或操作查詢字串分隔符號,以繞過檢查規則。

您只能在請求元件為 SingleQueryArgument或 時使用剖析前文字轉換AllQueryArguments。 AWS WAF 會在標準文字轉換之前套用剖析前文字轉換。每個規則陳述式最多可以指定 10 個剖析前文字轉換。每個預先剖析文字轉換都會將 10 WCUs 新增至規則陳述式成本。

在 API 中,您可以使用規則陳述式中的選用PreParseTextTransformations設定來設定剖析前文字轉換。

注意

如果您不需要任何剖析前標準化,請不要指定剖析前文字轉換。預設行為為 NONE,會將原始查詢字串傳遞給剖析器,無需修改。

以下預先剖析文字轉換可供使用。

None – NONE

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

URL decode – URL_DECODE

AWS WAF URL 會在剖析之前解碼原始查詢字串。解碼 %HH 序列 (例如,%26 變成 &,%3D 變成 =)。這可能會公開先前編碼的新查詢參數邊界。

URL decode Unicode – URL_DECODE_UNI

如同 URL_DECODE,但也會解碼 Unicode 編碼的序列 (%uHHHH)。如果代碼是在 FF01-FF5E 的全形 ASCII 碼範圍內,則使用較高的位元組來偵測和調整較低的位元組。否則,只會使用較低的位元組,而較高的位元組會歸零。

Combine duplicate query arguments by comma – COMBINE_DUPLICATE_QUERY_ARGS_BY_COMMA

AWS WAF 會將重複查詢參數索引鍵的所有值合併到第一個出現位置的單一逗號分隔 (0x2C) 字串,然後移除稍後的複本。例如,a=1&b=2&a=3 會變成 a=1,3&b=2。當您的後端將重複的查詢參數合併為陣列時,請使用此轉換。這在 .NET、API Gateway 和 Express.js 中很常見。 AWS WAF 會以單一單位的形式檢查合併值。

Replace semicolons with ampersands – REPLACE_SEMICOLONS_WITH_AMPERSANDS

AWS WAF 在剖析之前, 會將原始查詢字串中的所有分號 (0x3B) 取代為 ampersands (0x26)。有些 Web 架構和服務,包括 AWS API Gateway REST APIs,會將分號視為相當於 ampersands 的查詢參數分隔符號。此轉換會將查詢字串標準化。 AWS WAF 然後在分號上分割的方式與後端相同,以確保參數剖析一致。