我想限制使用特定副檔名的檔案上傳 (HTTP POST 請求) 到我的 Web 伺服器。
簡短描述
您分析 HTTP 請求的 POST 資料時,上傳的內容可以是以下兩種類型之一:
注意: AWS WAF 會檢查請求本文的前 8 KB (8,192 位元組)。如需大型本文請求的資訊,請參閱在 AWS WAF 中處理超大型網頁請求元件。
要限制使用特定副檔名 (例如 .pdf、.docx 或 .exe) 的檔案上傳,請完成以下步驟:
- 建立自訂 Web 存取控制清單 (Web ACL) 規則以檢查請求本文。
- 在規則內建立 regex 比對條件。使用此 regex 模式,以設定限制多個檔案附檔名的規則。
- 將動作設定為 BLOCK。
- 定義規則優先順序,讓此自訂規則的優先順序比任何可封鎖此規則的 Web ACL 規則要高。
- 驗證規則是否成功封鎖特定副檔名。
解決方法
識別 POST 資料使用的內容類型
HTTP 請求中的 POST 資料通常使用表單資料或二進制。
- 表單資料包括使用者在網頁 (或「HTML 表單」) 中輸入並由 HTTP 傳送 (或「貼文」) 到 Web 伺服器的任何資料。
- 二進制有效負載是除了文字有效負載之外的任何內容。例如,二進制有效負載可以是 .jpeg 檔案、.gzip 檔案或 .xml 檔案。這包括一般二進制資料,例如 .pdf 應用程式、.jpeg 影像或 .zip 應用程式。如需所有副檔名類型的資訊,請參閱網際網路號碼分配局 (IANA) 網站的媒體類型。
要識別 POST 請求的類型,請參閱 HTTP POST 標頭的 Content-Type 值。以下範例包含 multipart/form-data 的 Content-Type:
Content-Type: multipart/form-data
如果標頭 "Content-Type" 的值為 "multipart/form-data",則完成以下步驟以建立規則:
-
開啟 AWS WAF 主控台。
-
在導覽窗格的 AWS WAF 下,選擇 Web ACL。
-
在 Region (區域) 中,選擇您在其中建立 Web ACL 的 AWS 區域。
**注意:**如果您設定 Amazon CloudFront 的 Web ACL,請選取 Global (全域)。
-
選取您的 Web ACL。然後,選擇 Rules (規則) 標籤。
-
選擇 Add Rules (新增規則) 下拉式清單,然後選擇 Add my own rules and rule groups (新增我自己的規則和規則群組)。
-
針對 Rule type (規則類型),選擇 Rule Builder (規則建置器)。
-
針對 Name (名稱),輸入可識別此規則的名稱。
-
針對 Type (類型),選擇 Regular rule (一般規則)。
-
針對If a request (如果請求),選擇 matches the statement (比對陳述式)。然後,完成陳述式的下列欄位
針對 Inspect (檢查),選擇 Body (內文)。
針對內容類型,選擇 JSON。
針對 JSON 比對範圍,選擇值。
針對如果請求內文中的 JSON 無效,AWS WAF 應如何處理請求,選擇適合您使用案例的相關選項。
針對要檢查的內容,選擇完整 JSON 內容。
針對比對類型,選擇比對規則表達式。
針對規則表達式,請輸入要比對的 regex 模式。請參閱下列範例:
(?:.pdf|.doc|.docx|.ppt)
-
(選用) 針對 Text transformation (文字轉換),您可以新增文字轉換,或將這些欄位保留為 None (無)。
-
針對 Oversize Handling (加大處理),選擇適合您使用案例的相關選項。
-
針對 Action (動作),選擇 Block (封鎖)。
-
選擇新增規則。
-
(選用) 針對 Set Rule Priority (設定規則優先順序),選取您的規則並移動其優先順序。AWS WAF 會依照規則顯示的順序處理規則。如需詳細資訊,請參閱 Web ACL 中規則和規則群組的處理順序。
-
選擇 Save (儲存)。
驗證規則是否如預期般運作。
如果標頭 "Content-Type" 為二進制值,如 "application/pdf" 或 "application/ppt",則完成以下步驟以建立規則:
-
開啟 AWS WAF 主控台。
-
在導覽窗格的 AWS WAF 下,選擇 Web ACL。
-
在 Region (區域) 中,選擇您在其中建立 Web ACL 的 AWS 區域。**注意:**如果您設定 Amazon CloudFront 的 Web ACL,請選取 Global (全域)。
-
選取您的 Web ACL。然後,選擇 Rules (規則) 標籤。
-
選擇 Add Rules (新增規則) 下拉式清單,然後選擇 Add my own rules and rule groups (新增我自己的規則和規則群組)。
-
針對 Rule type (規則類型),選擇 Rule Builder (規則建置器)。
-
針對 Name (名稱),輸入可識別此規則的名稱。
-
針對 Type (類型),選擇 Regular rule (一般規則)。
-
針對If a request (如果請求),選擇 matches the statement (比對陳述式)。然後,完成陳述式的下列欄位:
針對檢查,選擇單一標頭。
針對標頭欄位名稱,輸入 Content-Type。
針對比對類型,選擇比對規則表達式。
針對規則表達式,請輸入要比對的 regex 模式。
請參閱以下 .pdf 和 .jpeg 檔案範例:
(?:pdf|jpeg)
-
(選用) 針對 Text transformation (文字轉換),您可以新增文字轉換,或將這些欄位保留為 None (無)。
-
針對 Action (動作),選擇 Block (封鎖)。
-
選擇新增規則。
-
(選用) 針對 Set Rule Priority (設定規則優先順序),選取您的規則並移動其優先順序。AWS WAF 會依照規則顯示的順序處理規則。如需詳細資訊,請參閱 Web ACL 中規則和規則群組的處理順序。
-
選擇 Save (儲存)。
-
驗證規則是否如預期般運作。
**注意:**要限制特定上傳 URI 路徑的規則,請使用可檢查路徑的 Web ACL 規則內的 AND 陳述式。