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

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

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

注意

這是AWS WAF傳統文件中)。如果您在 2019 年 11 月 AWS WAF 之前建立 AWS WAF 資源 (例如規則和 Web ACL),而且並未將其移轉至最新版本,則應該只使用此版本。若要移轉資源,請參閱 遷移您的AWS WAF傳統資源AWS WAF

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

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

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

當您建立跨網站指令碼比對條件時,請您指定篩選條件。篩選項目指示您想要的 Web 請求部分AWS WAF傳統用於檢查惡意指令碼,例如 URI 或查詢字串。您可以將多個篩選條件增至跨網站指令碼比對條件,或您可以為每個篩選條件建立獨立的條件。以下是每個組態如何影響AWS WAF傳統行為:

  • 每個跨網站指令碼比對條件有一個以上的篩選條件 (建議使用)— 當您將含有多個篩選條件的跨網站指令碼比對條件新增至規則,並將該規則新增至 Web ACL,Web 請求必須只能符合跨網站指令碼比對條件中的一個篩選條件,才能符合AWS WAF經典允許或阻止基於該條件的請求。

    例如,假設您建立一個跨網站指令碼比對條件,此條件含有兩個篩選條件。一個過濾器指示AWS WAF經典檢查 URI 是否有惡意腳本,以及其他指示AWS WAF經典檢查詢字串。AWS WAFClassic 允許或阻止請求,如果它們似乎包含惡意腳本要么URI 中在查詢字串。

  • 每個跨網站指令碼比對條件一項篩選條件— 當您將個別的跨網站指令碼比對條件新增至規則,並將該規則新增至 Web ACL,Web 請求必須符合所有AWS WAF傳統,根據條件允許或封鎖請求。

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

注意

當您新增跨網站指令碼比對條件至規則時,您也可以設定AWS WAF傳統允許或阻止似乎包含惡意指令碼。

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

  1. 登入。AWS Management Console開啟AWS WAF主控台https://console.aws.amazon.com/wafv2/

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

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

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

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

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

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

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

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

名稱

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

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

要篩選的請求部分是

選擇您想要的 Web 請求部分,AWS WAF經典的檢查惡意腳本:

標頭

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

HTTP 方法

HTTP 方法,指出請求希望原始伺服器執行的操作類型。CloudFront 支援下列方法:DELETEGETHEADOPTIONSPATCHPOSTPUT

查詢字串

出現在 ? 字元後的 URL 部分 (如果有)。

注意

針對跨網站指令碼比對條件,我們建議您選擇所有的查詢參數 (僅數值),而不是查詢字串for要篩選的請求部分是

URI

請求的 URI 路徑,用於識別資源,例如/images/daily-ad.jpg。這不包括 URI 的查詢字符串或片段組件。如需相關資訊,請參閱「」。統一資源識別符 (URI):泛型語法

除非指定 Transformation (轉換),URI 沒有標準化和受檢,就像 AWS 從用戶端收到部分的請求。Transformation (轉換) 將如指定重新格式化 URI。

Body

部分的請求內容含有您想傳送至您的 web 伺服器做為 HTTP 請求內文的額外資料,您要傳送到您的 Web 伺服器的 HTTP 請求的內文,例如資料表單。

注意

如果選擇Body (本文)的值要篩選的請求部分是、AWS WAF傳統只會檢查第一個 8192 位元組 (8 KB)。若要為超過 8192 位元組的內文允許或封鎖請求,您可以建立大小限制條件。(AWS WAF經典從請求標題中獲取主體的長度。) 如需詳細資訊,請參閱使用容量限制條件

單一查詢參數 (僅數值)

任何您已定義做為部分查詢字串的參數。例如,如果 URL 為「www.xyz.com?UserName=abc&SalesRegion=seattle」,則您可以新增篩選條件至 UserNameSalesRegion 參數。

如果您選擇單一查詢參數 (僅數值),您也可以指定查詢參數名稱。這是您將在查詢字串參數中檢查的項目,例如 UserNameSalesRegion查詢參數名稱的長度上限為 30 個字元。查詢參數名稱 不區分大小寫。例如,您指定 UserName查詢參數名稱,此會比對所有 UserName 的異體,如 usernameUsERName

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

類似於單一查詢參數 (僅數值),而不是檢查單個參數的值,AWS WAF「典型」會檢查查詢字串中的所有參數值是否有可能的惡意指令碼。例如,如果網址是「www.xyz. 使用者名稱 = ABC& 銷售區 = 西雅圖」,而您選擇所有的查詢參數 (僅數值)、AWS WAF經典將觸發匹配,如果UserNameSalesRegion可能含有惡意指令碼。

標頭

如果您選擇標頭for要篩選的請求部分是、從常見標頭清單中選擇一個標頭,或輸入您想要的標頭名稱AWS WAF經典的檢查惡意腳本。

轉換

轉換可在 Web 請求前,重新格式化 Web 請求AWS WAF經典檢查請求。此可避免攻擊者在 Web 請求中使用以試圖略過的某些異常格式AWS WAFClassic (傳統)。

您只能指定一種文字轉換類型。

轉換可執行下列操作:

AWS WAFClassic 在檢查 Web 請求的字串前,不執行任何文字轉換符合值

轉換成小寫

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

HTML 解碼

AWS WAF經典取代 HTML 編碼字元的 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/

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

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

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

    1. 選擇新增篩選條件

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

    3. 選擇 Add (新增)。

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

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

    2. 選擇刪除篩選條件

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

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

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

  1. 登入。AWS Management Console開啟AWS WAF主控台https://console.aws.amazon.com/wafv2/

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

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

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

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

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

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

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

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

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

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

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

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