使用跨網站指令碼比對條件 - AWS WAF、 AWS Firewall Manager、和 AWS Shield Advanced

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

使用跨網站指令碼比對條件

注意

這是AWS WAF 經典文檔。只有在您在 2019 年 11 月 AWS WAF 之前建立了規則和 Web ACL 等 AWS WAF 資源,但尚未將資源移轉至最新版本時,才應使用此版本。若要移轉資源,請參閱 將您的 AWS WAF 傳統資源遷移到 AWS WAF

如需的最新版本 AWS WAF,請參閱AWS WAF

攻擊者有時會將指令碼插入到 web 請求中,利用 web 應用程式的漏洞。您可以建立一或多個跨網站指令碼比對條件,以識別 Web 要求的部分,例如 URI 或查詢字串,您希望 C AWS WAF lassic 檢查可能的惡意指令碼。稍後,當您建立 Web ACL,您需要指定是否要允許或封鎖貌似含有惡意指令碼的請求。

建立跨網站指令碼比對條件

當您建立跨網站指令碼比對條件時,請您指定篩選條件。篩選器會指出您希望 C AWS WAF lassic 檢查惡意指令碼的 Web 要求部分,例如 URI 或查詢字串。您可以將多個篩選條件增至跨網站指令碼比對條件,或您可以為每個篩選條件建立獨立的條件。以下是每個配置如何影響 AWS WAF 傳統行為:

  • 每個跨網站指令碼相符條件有多個篩選器 (建議使用) — 當您新增包含多個篩選條件的跨網站指令碼比對條件至規則,並將規則新增至 Web ACL 時,Web 要求必須僅符合 C AWS WAF lassic 跨網站指令碼比對條件中的一個篩選器,才能根據該條件允許或封鎖要求。

    例如,假設您建立一個跨網站指令碼比對條件,此條件含有兩個篩選條件。一個過濾器指示 C AWS WAF lassic 檢查 URI 是否存在惡意腳本,另一個則指示 C AWS WAF lassic 檢查查詢字符串。 AWS WAF 如果要求似乎包含在 URI 或查詢字串中的惡意指令碼,Classic 會允許封鎖要求。

  • 每個跨網站指令碼相符條件一個篩選器 — 當您將個別的跨網站指令碼比對條件新增至規則,並將規則新增至 Web ACL 時,Web 要求必須符合 C AWS WAF lassic 的所有條件,才能根據條件允許或封鎖要求。

    假設您建立兩個條件,每個條件含有前述範例中兩個篩選條件中的一個。當您將這兩個條件新增至相同的規則,並將規則新增至 Web ACL 時,只有當 URI 和查詢字串看起來都包含惡意指令碼時,C AWS WAF lassic 才會允許或封鎖要求。

注意

當您將跨網站指令碼比對條件新增至規則時,您也可以將 C AWS WAF lassic 設定為允許或封鎖看似包含惡意指令碼的 Web 要求。

建立跨網站指令碼比對條件
  1. 請登入 AWS Management Console 並開啟 AWS WAF 主控台,網址為 https://console.aws.amazon.com/wafv2/

    如果您在導覽窗格中看到 [切換到 AWS WAF 傳統],請選取它。

  2. 在導覽窗格中,選擇 Cross-site scripting (跨網站訂閱)

  3. 選擇 Create condition (建立條件)

  4. 指定適用的篩選條件設定。如需詳細資訊,請參閱 當您建立或編輯跨網站指令碼比對條件時所指定的值

  5. 選擇 Add another filter (新增其他篩選條件)

  6. 如果您希望新增另一個篩選,重複步驟四和五。

  7. 完成新增篩選條件,請選擇建立

當您建立或編輯跨網站指令碼比對條件時所指定的值

當您建立或更新跨網站指令碼比對條件時,您需指定的以下的值:

名稱

跨網站指令碼比對條件的篩選條件的名稱。

名稱僅能由 A-Z、a-z、0-9 和特殊字元:_-!"#`+*},./ 組成。條件的名稱在建立後無法變更。

要篩選的請求部分是

選擇您希望 C AWS WAF lassic 檢查惡意腳本的每個 Web 請求的部分:

標頭

指定的請求標頭,例如,User-AgentReferer 標頭。如果您選擇標頭,請在標頭欄位裡指定標頭的名稱。

HTTP 方法

HTTP 方法,指出要求來源執行的作業類型。CloudFront 支援下列方法:DELETEGETHEADOPTIONSPATCHPOST、和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

如果您選擇單一查詢參數 (僅數值),您也可以指定查詢參數名稱。這是您要檢查的查詢字串中的參數,例如UserNameSalesRegion查詢參數名稱的長度上限為 30 個字元。查詢參數名稱 不區分大小寫。例如,您指定UserName查詢參數名稱,這將匹配的所有變體 UserName,例如用戶名和用戶名

所有的查詢參數 (僅數值)

類似於單一查詢參數 (僅限值),而不是檢查單一參數的值,C AWS WAF lassic 會檢查查詢字串中的所有參數值是否存在可能的惡意指令碼。例如,如果網址是「www.xyz.com? UserName =abc& = 西雅圖/ SalesRegion 西雅圖」,並且您選擇「所有查詢參數」(僅限值),如果其中一個值為或包含可能的惡意指令碼, AWS WAF 傳統就會觸發相符項目。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 編碼的字符:

  • " 換成 &

  • 以非中斷空格取代  

  • &lt; 換成 <

  • &gt; 換成 >

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

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

標準化空格

AWS WAF 經典用空格字符(十進制 32)替換以下字符:

  • \f、跳頁、小數 12

  • \t、標籤、小數 9

  • \n、換行,小數 10

  • \r、換行、小數 13

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

  • 非中斷空格,小數 160

此外,此選項將數個空格取代為一個空格。

簡化命令列

對於包含作業系統命令列命令的請求,請使用此選項以執行以下轉換:

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

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

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

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

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

URL 解碼

解碼 URL 編碼請求。

新增和刪除跨網站指令碼比對條件的篩選條件

您可以新增和刪除跨網站指令碼比對條件的篩選條件。若要變更篩選條件、新增新的篩選條件、和刪除舊的篩選條件。

若要新增和刪除跨網站指令碼比對條件的篩選條件
  1. 請登入 AWS Management Console 並開啟 AWS WAF 主控台,網址為 https://console.aws.amazon.com/wafv2/

    如果您在導覽窗格中看到 [切換到 AWS WAF 傳統],請選取它。

  2. 在導覽窗格中,選擇 Cross-site scripting (跨網站訂閱)

  3. 選擇您想要在條件裡新增或刪除的篩選條件。

  4. 若要新增篩選條件,請執行以下步驟:

    1. 選擇新增篩選條件

    2. 指定適用的篩選條件設定。如需詳細資訊,請參閱 當您建立或編輯跨網站指令碼比對條件時所指定的值

    3. 選擇新增

  5. 若要刪除篩選條件,請執行以下步驟:

    1. 選取您要刪除的篩選條件。

    2. 選擇刪除篩選條件

刪除跨網站指令碼比對條件

如果您想要刪除跨網站指令碼比對條件,您必須先刪除該條件內的所有篩選條件,以及從所有使用它的規則中移除,請參閱下列程序。

刪除跨網站指令碼比對條件
  1. 請登入 AWS Management Console 並開啟 AWS WAF 主控台,網址為 https://console.aws.amazon.com/wafv2/

    如果您在導覽窗格中看到 [切換到 AWS WAF 傳統],請選取它。

  2. 在導覽窗格中,選擇 Cross-site scripting (跨網站訂閱)

  3. 跨網站指令碼比對條件窗格中,選擇您要刪除的跨網站指令碼比對條件。

  4. 在右窗格中,選擇 Associated rules (關聯的規則) 標籤。

    如果使用此跨網站指令碼比對條件規則的名單為空白,請移至步驟六。如果清單有包含任何規則,請記下該規則並繼續步驟五。

  5. 若要從使用該跨網站指令碼比對條件的規則中移除該條件,請執行以下步驟:

    1. 在導覽窗格中,選擇規則

    2. 選擇要刪除使用該跨網站指令碼比對條件的規則名稱。

    3. 在右窗格中,選擇要刪除使用該跨網站指令碼比對條件的規則,然後選擇移除選取的條件

    4. 對所有剩下要刪除使用該跨網站指令碼比對條件的規則,重複步驟 b 和 c。

    5. 在導覽窗格中,選擇 Cross-site scripting (跨網站訂閱)

    6. 跨網站指令碼比對條件窗格中,選擇您要刪除的跨網站指令碼比對條件。

  6. 選擇刪除以刪除選取的條件。