

**推出 的新主控台體驗 AWS WAF**

您現在可以使用更新後的體驗，在主控台的任何位置存取 AWS WAF 功能。如需詳細資訊，請參閱[使用 主控台](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-console.html)。

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

# 使用跨網站指令碼比對條件
<a name="classic-web-acl-xss-conditions"></a>

**警告**  
AWS WAF Classic 正在經歷規劃end-of-life程序。如需區域特定的里程碑和日期，請參閱您的 AWS Health 儀表板。

**注意**  
這是 **AWS WAF Classic** 文件。只有在您在 2019 年 11 月 AWS WAF 之前建立 AWS WAF 規則和 Web ACLs 等資源，且尚未將它們遷移到最新版本時，才應該使用此版本。若要遷移您的 Web ACLs，請參閱 [將您的 AWS WAF Classic 資源遷移至 AWS WAF](waf-migrating-from-classic.md)。  
**如需 的最新版本 AWS WAF**，請參閱 [AWS WAF](waf-chapter.md)。

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

**Topics**
+ [建立跨網站指令碼比對條件](#classic-web-acl-xss-conditions-creating)
+ [當您建立或編輯跨網站指令碼比對條件時所指定的值](#classic-web-acl-xss-conditions-values)
+ [新增和刪除跨網站指令碼比對條件的篩選條件](#classic-web-acl-xss-conditions-editing)
+ [刪除跨網站指令碼比對條件](#classic-web-acl-xss-conditions-deleting)

## 建立跨網站指令碼比對條件
<a name="classic-web-acl-xss-conditions-creating"></a>

當您建立跨網站指令碼比對條件時，請您指定篩選條件。篩選條件指出您希望 AWS WAF Classic 檢查惡意指令碼的 Web 請求部分，例如 URI 或查詢字串。您可以將多個篩選條件增至跨網站指令碼比對條件，或您可以為每個篩選條件建立獨立的條件。以下是每個組態如何影響 AWS WAF Classic 行為的方式：
+ **每個跨網站指令碼比對條件都有多個篩選條件 （建議）** – 當您將包含多個篩選條件的跨網站指令碼比對條件新增至規則，並將規則新增至 Web ACL 時，Web 請求必須僅符合跨網站指令碼比對條件中的其中一個篩選條件， AWS WAF Classic 才能根據該條件允許或封鎖請求。

  例如，假設您建立一個跨網站指令碼比對條件，此條件含有兩個篩選條件。一個篩選條件指示 AWS WAF Classic 檢查 URI 是否有惡意指令碼，另一個則指示 AWS WAF Classic 檢查查詢字串。 AWS WAF 如果請求在 URI **或查詢字串中似乎包含惡意指令碼，則 Classic 允許*或*封鎖請求。
+ **每個跨網站指令碼比對條件一個篩選條件** – 當您將個別的跨網站指令碼比對條件新增至規則並將規則新增至 Web ACL 時，Web 請求必須符合 AWS WAF Classic 的所有條件，才能根據條件允許或封鎖請求。

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

**注意**  
當您將跨網站指令碼比對條件新增至規則時，您也可以設定 AWS WAF Classic 來允許或封鎖看起來*不包含*惡意指令碼的 Web 請求。<a name="classic-web-acl-xss-conditions-creating-procedure"></a>

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

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/wafv2/](https://console.aws.amazon.com/wafv2/) 開啟 AWS WAF 主控台。

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

1. 在導覽窗格中，選擇 **Cross-site scripting (跨網站訂閱)**。

1. 選擇 **Create condition (建立條件)**。

1. 指定適用的篩選條件設定。如需詳細資訊，請參閱[當您建立或編輯跨網站指令碼比對條件時所指定的值](#classic-web-acl-xss-conditions-values)。

1. 選擇 **Add another filter (新增其他篩選條件)**。

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

1. 完成新增篩選條件，請選擇**建立**。

## 當您建立或編輯跨網站指令碼比對條件時所指定的值
<a name="classic-web-acl-xss-conditions-values"></a>

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

**名稱**  
跨網站指令碼比對條件的篩選條件的名稱。  
名稱僅能由 A-Z、a-z、0-9 和特殊字元：\_-\!"\#`\+\*},./ 組成。條件的名稱在建立後無法變更。

**要篩選的請求部分是**  
選擇您希望 AWS WAF Classic 檢查惡意指令碼的每個 Web 請求的部分：    
**標頭**  
指定的請求標頭，例如，`User-Agent` 或 `Referer` 標頭。如果您選擇**標頭**，請在**標頭**欄位裡指定標頭的名稱。  
**HTTP 方法**  
HTTP 方法，指出請求要求原始伺服器執行的操作類型。CloudFront 支援下列方法：`DELETE`、`GET`、`HEAD`、`OPTIONS`、`PATCH`、`POST` 和 `PUT`。  
**查詢字串**  
出現在 `?` 字元後的 URL 部分 (如果有)。  
對於跨網站指令碼比對條件，我們建議您選擇**所有查詢參數 （僅限值）**，而不是**要篩選的部分請求**的**查詢字串**。  
**URI**  
請求的 URI 路徑，可識別資源，例如 `/images/daily-ad.jpg`。這不包含 URI 的查詢字串或片段元件。如需詳細資訊，請參閱[統一資源識別符 (URI)：一般語法](https://tools.ietf.org/html/rfc3986#section-3.3)。  
除非指定**轉換**，否則 URI 不會標準化，並如同在請求中從用戶端 AWS 接收 URI 一樣進行檢查。**Transformation (轉換)** 將如指定重新格式化 URI。  
**Body**  
部分的請求內容含有您想傳送至您的 web 伺服器做為 HTTP 請求內文的額外資料，您要傳送到您的 Web 伺服器的 HTTP 請求的內文，例如資料表單。  
如果您選擇**內文**做為**要篩選之請求部分**的值， AWS WAF Classic 只會檢查前 8192 個位元組 (8 KB)。若要允許或封鎖內文超過 8192 個位元組的請求，您可以建立大小限制條件。(AWS WAF Classic 會從請求標頭取得內文的長度。) 如需詳細資訊，請參閱[使用容量限制條件](classic-web-acl-size-conditions.md)。  
**單一查詢參數 (僅數值)**  
任何您已定義做為部分查詢字串的參數。例如，如果 URL 為「www.xyz.com?UserName=abc&SalesRegion=seattle」，則您可以新增篩選條件至 *UserName* 或 *SalesRegion* 參數。  
如果您選擇**單一查詢參數 (僅數值)**，您也可以指定**查詢參數名稱**。這是您將在查詢字串參數中檢查的項目，例如 *UserName* 或 *SalesRegion*。**查詢參數名稱**的長度上限為 30 個字元。**查詢參數名稱** 不區分大小寫。例如，您指定 *UserName* 為**查詢參數名稱**，此會比對所有 *UserName* 的異體，如 *username* 和 *UsERName*。  
**所有的查詢參數 (僅數值)**  
與**單一查詢參數 （僅限值）** 類似，但與檢查單一參數的值不同， AWS WAF Classic 會檢查查詢字串中的所有參數值是否有可能的惡意指令碼。例如，如果 URL 是 "www.xyz.com？UserName=abc&SalesRegion=seattle"，而且您選擇**所有查詢參數 （僅限值）**，則如果 *UserName* 或 *SalesRegion* 的值包含可能的惡意指令碼， AWS WAF Classic 將觸發相符項目。

**標頭**  
如果您為**要篩選的部分請求**選擇**標頭**，請從常見標頭清單中選擇標頭，或輸入您要 AWS WAF Classic 檢查惡意指令碼的標頭名稱。

**轉換**  
轉換會在 AWS WAF Classic 檢查請求之前重新格式化 Web 請求。這消除了攻擊者為了繞過 AWS WAF Classic 而在 Web 請求中使用的一些異常格式。  
您只能指定一種文字轉換類型。  
轉換可執行下列操作：    
**無**  
AWS WAF 在檢查 Web 請求中的**字串是否相符**之前，Classic 不會對 Web 請求執行任何文字轉換。  
**轉換成小寫**  
AWS WAF Classic 會將大寫字母 (A-Z) 轉換為小寫 (a-z)。  
**HTML 解碼**  
AWS WAF Classic 以未編碼的字元取代 HTML 編碼的字元：  
+ 將 `&quot;` 換成 `&`
+ 以非中斷空格取代 `&nbsp;`
+ 將 `&lt;` 換成 `<`
+ 將 `&gt;` 換成 `>`
+ 將表示為十六進位格式的字元 `&#xhhhh;` 以對應字元取代
+ 將表示為十進位格式的字元 `&#nnnn;` 以對應字元取代  
**標準化空格**  
AWS WAF Classic 以空格字元 （小數 32) 取代下列字元：  
+ \\f、跳頁、小數 12
+ \\t、標籤、小數 9
+ \\n、換行，小數 10
+ \\r、換行、小數 13
+ \\v、垂直標籤，小數 11
+ 非中斷空格，小數 160
此外，此選項將數個空格取代為一個空格。  
**簡化命令列**  
對於包含作業系統命令列命令的請求，請使用此選項以執行以下轉換：  
+ 刪除以下字元：\\ " ' ^
+ 刪除以下字元前的空格：/ (
+ 將以下字元取代為空格：, ;
+ 將數個空格取代為一個空格
+ 將所有大寫字母 (A-Z) 轉換成小寫 (a-z)  
**URL 解碼**  
解碼 URL 編碼請求。

## 新增和刪除跨網站指令碼比對條件的篩選條件
<a name="classic-web-acl-xss-conditions-editing"></a>

您可以新增和刪除跨網站指令碼比對條件的篩選條件。若要變更篩選條件、新增新的篩選條件、和刪除舊的篩選條件。<a name="classic-web-acl-xss-conditions-editing-procedure"></a>

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

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/wafv2/](https://console.aws.amazon.com/wafv2/) 開啟 AWS WAF 主控台。

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

1. 在導覽窗格中，選擇 **Cross-site scripting (跨網站訂閱)**。

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

1. 若要新增篩選條件，請執行以下步驟：

   1. 選擇**新增篩選條件**。

   1. 指定適用的篩選條件設定。如需詳細資訊，請參閱[當您建立或編輯跨網站指令碼比對條件時所指定的值](#classic-web-acl-xss-conditions-values)。

   1. 選擇**新增**。

1. 若要刪除篩選條件，請執行以下步驟：

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

   1. 選擇**刪除篩選條件**。

## 刪除跨網站指令碼比對條件
<a name="classic-web-acl-xss-conditions-deleting"></a>

如果您想要刪除跨網站指令碼比對條件，您必須先刪除該條件內的所有篩選條件，以及從所有使用它的規則中移除，請參閱下列程序。<a name="classic-web-acl-xss-conditions-deleting-procedure"></a>

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

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/wafv2/](https://console.aws.amazon.com/wafv2/) 開啟 AWS WAF 主控台。

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

1. 在導覽窗格中，選擇 **Cross-site scripting (跨網站訂閱)**。

1. 在**跨網站指令碼比對條件**窗格中，選擇您要刪除的跨網站指令碼比對條件。

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

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

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

   1. 在導覽窗格中，選擇**規則**。

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

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

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

   1. 在導覽窗格中，選擇 **Cross-site scripting (跨網站訂閱)**。

   1. 在**跨網站指令碼比對條件**窗格中，選擇您要刪除的跨網站指令碼比對條件。

1. 選擇**刪除**以刪除選取的條件。