我想限制使用特定副檔名的檔案上傳 (HTTP POST 請求) 到我的 Web 伺服器。
簡短描述
您分析 HTTP 請求的 POST 資料時,上傳的內容可以是以下兩種類型之一:
注意: AWS WAF 會檢查請求本文的前 8 KB (8,192 位元組)。這是硬性服務限制,您無法變更。
要限制使用特定副檔名 (例如 .pdf、.docx 或 .exe) 的檔案上傳,請完成以下步驟:
1. 建立自訂 Web 存取控制清單 (Web ACL) 規則以檢查請求內文。
2. 在規則內建立 regex 比對條件。使用此 regex 模式,以設定限制多個檔案附檔名的規則。
3. 將規則動作設定為「封鎖」。
4. 定義規則優先順序,讓此自訂規則的優先順序比任何可封鎖此規則的 Web ACL 規則要高。
5. 驗證規則是否成功封鎖特定副檔名。
解決方法
識別 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",則完成以下步驟以建立規則:
1. 開啟 AWS WAF 主控台。
2. 在導覽窗格的 AWS WAF 下,選擇 Web ACL。
3. 在區域中,選擇您在其中建立 Web ACL 的 AWS 區域。
注意:如果您設定 Amazon CloudFront 的 Web ACL,請選取全域。
4. 選取您的 Web ACL。然後,選擇規則標籤。
5. 選擇新增規則下拉式清單,然後選擇新增我自己的規則和規則群組。
6. 針對規則類型,選擇規則建置器。
7. 針對名稱,輸入可識別此規則的名稱。
8. 針對類型,選擇一般規則。
9. 針對如果請求,選擇比對****陳述。然後,完成陳述的下列欄位:
針對檢查,選擇內文。
針對內容類型,選擇 JSON。
針對 JSON 比對範圍,選擇值。
針對如果請求內文中的 JSON 無效,AWS WAF 應如何處理請求,選擇適合您使用案例的相關選項。
針對要檢查的內容,選擇完整 JSON 內容。
針對比對類型,選擇比對規則表達式。
針對規則表達式,請輸入要比對的 regex 模式。請參閱以下範例:
(?:.pdf|.doc|.docx|.ppt)
10. (選用) 針對文字轉換,您可以新增文字轉換,或將這些欄位保留為無。
11. 針對加大處理,選擇適合您使用案例的相關選項。
12. 針對動作,選擇封鎖。
13. 選擇新增規則。
14. (選用) 針對設定規則優先順序,選取您的規則並移動其優先順序。AWS WAF 會依照規則顯示的順序處理規則。如需詳細資訊,請參閱 Web ACL 中處理規則和規則群組的順序。
15. 選擇儲存。
驗證規則是否如預期般運作。
如果標頭 "Content-Type" 為二進制值,如 "application/pdf" 或 "application/ppt",則完成以下步驟以建立規則:
1. 開啟 AWS WAF 主控台。
2. 在導覽窗格的 AWS WAF 下,選擇 Web ACL。
3. 在區域中,選擇您在其中建立 Web ACL 的 AWS 區域。
注意:如果您設定 Amazon CloudFront 的 Web ACL,請選取全域。
4. 選取您的 Web ACL。然後,選擇規則標籤。
5. 選擇新增規則下拉式清單,然後選擇新增我自己的規則和規則群組。
6. 針對規則類型,選擇規則建置器。
7. 針對名稱,輸入可識別此規則的名稱。
8. 針對類型,選擇一般規則。
9. 針對如果請求,選擇比對****陳述。然後,完成陳述的下列欄位:
針對檢查,選擇單一標頭。
針對標頭欄位名稱,輸入 Content-Type。
針對比對類型,選擇比對規則表達式。
針對規則表達式,請輸入要比對的 regex 模式。請參閱以下 .pdf 和 .jpeg 檔案範例:
(?:pdf|jpeg)
10. (選用) 針對文字轉換,您可以新增文字轉換,或將這些欄位保留為無。
11. 針對動作,選擇封鎖。
12. 選擇新增規則。
13. (選用) 針對設定規則優先順序,選取您的規則並移動其優先順序。AWS WAF 會依照規則顯示的順序處理規則。如需詳細資訊,請參閱 Web ACL 中處理規則和規則群組的順序。
14. 選擇儲存。
驗證規則是否如預期般運作。
**注意:**要限制特定上傳 URI 路徑的規則,請使用可檢查路徑的 Web ACL 規則內的 AND 陳述式。