使用 SQL Injection 比對條件 - AWS WAF、 AWS Firewall Manager、和 AWS Shield Advanced

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

使用 SQL Injection 比對條件

注意

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

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

攻擊者有時插入惡意 SQL 程式碼到 web 請求中,以從您的資料庫擷取資料。若要根據請求是否有含有惡意 SQL 碼,允許或封鎖 web 請求,請建立一個或多個 SQL injection 比對條件。SQL 注入匹配條件標識 Web 請求的部分,例如 URI 路徑或查詢字符串,您希望 AWS WAF 經典檢查。稍後,當您建立 Web ACL,您需要指定是否要允許或封鎖貌似含有惡意 SQL 程式碼的請求。

使用 SQL Injection 比對條件

當您建立 SQL 插入相符條件時,您可以指定篩選器,這些篩選器會指出您希望 C AWS WAF lassic 檢查是否有惡意 SQL 程式碼的 Web 要求部分,例如 URI 或查詢字串。您可以將多個篩選條件增至 SQL injection 比對條件,或您可以為每個篩選條件建立獨立的條件。以下是每個配置如何影響 AWS WAF 傳統行為:

  • 每個 SQL 插入相符條件有多個篩選器 (建議使用) — 當您將包含多個篩選的 SQL 插入相符條件新增至規則,並將規則新增至 Web ACL 時,Web 要求只需要符合 AWS WAF 傳統 SQL 插入比對條件中的其中一個篩選器,即可根據該條件允許或封鎖要求。

    例如,假設您建立一個SQL injection 比對條件,此條件含有兩個篩選條件。一個過濾器指示 AWS WAF 經典檢查 URI 是否存在惡意 SQL 代碼,另一個則指示 AWS WAF 經典檢查查詢字符串。 AWS WAF 如果要求似乎包含在 URI 或查詢字串中的惡意 SQL 程碼,則傳統會允許封鎖要求。

  • 每個 SQL 插入相符條件都有一個篩選器 — 當您將個別的 SQL 插入相符條件新增至規則,並將規則新增至 Web ACL 時,Web 要求必須符合「 AWS WAF 典型」的所有條件,才能根據條件允許或封鎖要求。

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

注意

當您將 SQL 插入相符條件新增至規則時,您也可以將「 AWS WAF 典型」設定為允許或封鎖看似包含惡意 SQL 程式碼的 Web 要求。

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

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

  2. 在導覽窗格中,選擇 SQL injection

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

  4. 指定適用的篩選條件設定。如需詳細資訊,請參閱 在您建立或編輯 SQL Injection 比對條件時所指定的值

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

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

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

在您建立或編輯 SQL Injection 比對條件時所指定的值

在建立或更新 SQL Injection 比對條件時,請指定以下的值:

名稱

SQL Injection 比對條件的名稱。

名稱僅能含有英數字元 (A-Z、a-z、0-9) 或以下特殊字元:_-!"#`+*},./。條件的名稱在建立後無法變更。

要篩選的請求部分是

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

標頭

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

HTTP 方法

HTTP 方法,指出要求來源執行的作業類型。CloudFront 支援下列方法:DELETEGETHEADOPTIONSPATCHPOST、和PUT

查詢字串

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

注意

對於 SQL 注入匹配條件,我們建議您選擇所有查詢參數(僅限值),而不是查詢字符串部分請求進行篩選。

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 會檢查查詢字串中所有參數的值,找出可能的惡意 SQL 程式碼。例如,如果網址是「www.xyz.com? UserName =abc& = SalesRegion 西雅圖」,而您選擇「所有查詢參數 (僅限值)」,如果其中一個值UserName包含可能的惡意 SQL 程式碼, AWS WAF 傳統就會觸發相符項目。SalesRegion

標頭

如果您選擇要篩選的部分要求的標,請從通用標頭清單中選擇標頭,或輸入您希望 C AWS WAF lassic 檢查惡意 SQL 程式碼的標頭名稱。

轉換

轉換會在 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 編碼請求。

新增和刪除 SQL Injection 比對條件的篩選條件

您可以新增和刪除 SQL Injection 比對條件的篩選條件。若要變更篩選條件、新增新的篩選條件、和刪除舊的篩選條件。

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

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

  2. 在導覽窗格中,選擇 SQL injection

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

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

    1. 選擇新增篩選條件

    2. 指定適用的篩選條件設定。如需詳細資訊,請參閱 在您建立或編輯 SQL Injection 比對條件時所指定的值

    3. 選擇新增

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

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

    2. 選擇刪除篩選條件

刪除 SQL Injection 比對條件

如果您想要刪除 SQL Injection 比對條件,您需要先刪除該條件內的所有篩選條件,以及從所有使用它的規則中移除,請參閱下列程序。

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

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

  2. 在導覽窗格中,選擇 SQL injection

  3. SQL Injection 比對條件窗格中,選擇您要刪除的 SQL Injection 比對條件。

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

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

  5. 若要從使用該 SQL Injection 比對條件的規則中移除該條件,請執行以下步驟:

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

    2. 選擇要刪除使用該 SQL Injection 比對條件的規則名稱。

    3. 在右窗格中,選擇要刪除 SQL Injection 比對條件的規則,然後選擇移除選取的條件

    4. 對所有剩下要刪除使用該 SQL Injection 比對條件的規則,重複步驟 b 和 c。

    5. 在導覽窗格中,選擇 SQL injection

    6. SQL Injection 比對條件窗格中,選擇您要刪除的 SQL Injection 比對條件。

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