如何建立 AWS WAF 規則來防範 SQLi 和 XSS?
我想防範 SQL 隱碼攻擊(SQLi)和跨網站指令碼 (XSS)。AWS WAF 提供哪些選項來防範 SQLi 和 XSS 攻擊?
簡短描述
AWS WAF 提供下列防護來防範 SQLi 和 XSS 攻擊:
- 內建 SQLi 和 XSS 引擎
- 適用於 SQLi 和 XSS 隱碼攻擊的 AWS 受管規則
若要設定這些防護,請確定您已設定好 AWS WAF,並建立 Web ACL。
**注意:**AWS WAF 在檢查正文、標頭或 Cookie 請求元件時有限制。如需詳細資訊,請參閱檢查請求正文、標題和 Cookie。
解決方案
重要事項: 最佳做法是在非生產環境中測試規則,並將「動作」設定為「計數」。使用結合 AWS WAF 取樣請求或 AWS WAF 日誌的 Amazon CloudWatch 指標來評估規則。如果您滿意規則執行您想要的動作,請將「 動作 」變更為「 封鎖 」。
使用內建的 SQLi 和 XSS 引擎
攻擊可能會針對 HTTP 請求的不同部分執行,例如 HTTP 標頭、查詢字串或 URI。請設定 AWS WAF 規則,以針對內建的緩解引擎檢查 HTTP 請求的不同部分。
SQLi 攻擊規則陳述式
建立 SQL 隱碼攻擊規則陳述式以檢查是否有惡意的 SQL 程式碼。若要建立 SQLi 攻擊規則陳述式,請執行下列動作:
- 開啟 AWS WAF 主控台。
- 在導覽窗格的 AWS WAF 下,選擇 Web ACL。
- 在區域中,選擇您在其中建立 Web ACL 的 AWS 區域。
**注意:**如果您的網路 ACL 是針對 Amazon CloudFront 所設定,請選取全域。 - 選取您的 Web ACL。
- 選擇「 規則 」,然後選擇「 新增規則 」。從下拉式清單中選取 [ 新增我自己的規則和規則群組 ]。
- 在名稱中,輸入規則名稱,然後選擇一般規則。
- 針對 If a request (如果請求),選擇 matches the statement (比對所有陳述式)。
- 針對「 檢查 」,選取要根據 SQLi 內建緩和引擎評估的「 請求元件 」。
- 針對「 比對類型 」,請從下拉式清單中選取「 包含 SQL 隱碼攻擊 」。
- 選擇一項文字轉換。
- 針對「動作」,選擇「封鎖」。
- 選擇 Add Rule (新增規則)。
- 選擇 Save (儲存)。
XSS 攻擊規則陳述式
建立跨網站指令碼攻擊規則陳述式,以檢查 Web 請求元件中是否有惡意指令碼。若要建立 XSS 攻擊規則陳述式,請執行下列動作:
- 開啟 AWS WAF 主控台。
- 在導覽窗格的 AWS WAF 下,選擇 Web ACL。
- 在區域中,選擇您在其中建立 Web ACL 的 AWS 區域。
**注意:**如果您的網路 ACL 是針對 Amazon CloudFront 所設定,請選取全域。 - 選取您的 Web ACL。
- 選擇「 規則 」,然後選擇「 新增規則 」。從下拉式清單中選取 [ 新增我自己的規則和規則群組 ]。
- 在名稱中,輸入規則名稱,然後選擇一般規則。
- 針對 If a request (如果請求),選擇 matches the statement (比對所有陳述式)。
- 針對「 檢查 」,選取要根據 XSS 內建緩和引擎評估的「 請求元件 」。
- 針對「 比對類型 」,請從下拉式清單中選取「 包含 XSS 隱碼攻擊 」。
- 選擇一項文字轉換。
- 針對「動作」,選擇「封鎖」。
- 選擇 Add Rule (新增規則)。
- 選擇 Save (儲存)。
針對多個請求組件進行評估的 SQLi 和 XSS 攻擊規則
若要建立評估多個請求元件的攻擊規則,請執行下列動作:
- 開啟 AWS WAF 主控台。
- 在導覽窗格的 AWS WAF 下,選擇 Web ACL。
- 在區域中,選擇您在其中建立 Web ACL 的 AWS 區域。
**注意:**如果您的網路 ACL 是針對 Amazon CloudFront 所設定,請選取全域。 - 選取您的 Web ACL。
- 選擇「 規則 」,然後選擇「 新增規則 」。從下拉式清單中選取 [ 新增我自己的規則和規則群組 ]。
- 在名稱中,輸入規則名稱,然後選擇一般規則。
- 針對 If a request (如果請求),選擇 matches at least one of the statements (OR) (至少符合其中一個陳述式)。
- 針對「 檢查 」,選取要根據 SQLi 或 XSS 內建緩和引擎評估的「 請求元件 」。
- 針對「 比對類型 」,請從下拉式清單中選取「 包含 SQLI 隱碼攻擊 」或是「 包含 XSS 隱碼攻擊 」。
- 選擇一項文字轉換。
- 針對每個陳述式重複步驟 8 到 10。選擇「 新增其他陳述式 」以進行其他規則評估。
- 針對「動作」,選擇「封鎖」。
- 選擇 Add Rule (新增規則)。
- 選擇 Save (儲存)。
重要事項:您必須套用正確的文字轉換,規則才能照預期運作。例如,如果您正在檢查 Cookie,請使用以下與 Cookie 相關的轉換:
- URL 解碼
- HTML 實體解碼
- Lowercase (小寫)
使用適用於 SQLi 和 XSS 隱碼攻擊的 AWS 受管規則
使用適用於 AWS WAF 的 AWS 受管規則來防範應用程式漏洞或其他不必要的流量,而不必自行撰寫規則。
注意: 受管規則會受到版本變更和時限影響。如需詳細資訊,請參閱處理受管規則群組版本的最佳實務。
使用 SQL 資料庫受管規則群組來防範 SQL 隱碼攻擊。SQL 資料庫受管規則群組 (預設版本 1.1) 有下列規則可提供防護:
- SQLiExtendedPatterns_QUERYARGUMENTS
- SQLi_QUERYARGUMENTS
- SQLi_Body
- SQLi_COOKIE
- SQLi_URIPATH
使用核心規則集 (CRS) 受管規則群組 來防範 XSS 隱碼攻擊。核心規則集 (CRS) 受管規則群組 (預設版本 1.3) 有下列規則可提供防護:
- CrossSiteScripting_COOKIE
- CrossSiteScripting_QUERYARGUMENTS
- CrossSiteScripting_BODY
- CrossSiteScripting_URIPATH
將 AWS 受管規則群組新增至您的網路 ACL
- 開啟 AWS WAF 主控台。
- 在導覽窗格的 AWS WAF 下,選擇 Web ACL。
- 在區域中,選擇您在其中建立 Web ACL 的 AWS 區域。
**注意:**如果您的網路 ACL 是針對 Amazon CloudFront 所設定,請選取全域。 - 選取您的 Web ACL。
- 選擇「 規則 」,然後選擇「 新增規則 」。從下拉式清單中選取「 新增受管規則群組 」。
- 展開 AWS 受管規則群組 區段。
- 找到規則群組並開啟「 新增至網頁 ACL 」。
例如,您可以為用於 SQLi 防護的 SQL 資料庫和用於 XSS 防護的核心規則集開啟「 新增至網頁 ACL 」。 - (選擇性)選擇「 編輯 」以檢視及修改規則群組的設定。
- 選擇「 新增規則 」。
- 選擇 Save (儲存)。
若要在 Web ACL 中編輯現有的 AWS 受管規則群組
- 開啟 AWS WAF 主控台。
- 在導覽窗格的 AWS WAF 下,選擇 Web ACL。
- 在區域中,選擇您在其中建立 Web ACL 的 AWS 區域。
**注意:**如果您的網路 ACL 是針對 Amazon CloudFront 所設定,請選取全域。 - 選取您的 Web ACL。
- 選擇「 規則 」,然後選擇「 編輯 」以檢視和修改設定。
附註:如需編輯設定的其他資訊,請參閱使用受管規則群組。 - 完成編輯後,請選擇「 儲存 」。
如果您發現 AWS 受管規則群組產生誤判情形,請參閱 AWS WAF 的 AWS 受管規則。
相關內容
- 已提問 1 年前lg...
- 已提問 1 年前lg...
- 已提問 9 個月前lg...
- 已提問 1 年前lg...
- AWS 官方已更新 9 個月前
- AWS 官方已更新 4 個月前
- AWS 官方已更新 3 年前