我想限制使用特定副檔名的檔案上傳 (HTTP POST 請求) 到我的 Web 伺服器。
簡短描述
您分析 HTTP 請求的 POST 資料時,上傳的內容可以是以下兩種類型之一:
若要限制具有特定副檔名 (.pdf、.docx、.exe) 的檔案上傳,您需要在 AWS WAF 中建立並設定自訂 Web 存取控制清單 (web ACL) 規則。
注意: AWS WAF 會檢查請求內文的前 8 KB (8,192 位元組)。如需較大主體請求的資訊,請參閱 AWS WAF 中的超大型網頁請求元件。
解決方法
識別 POST 資料使用的內容類型
HTTP 請求中的 POST 資料通常使用表單資料或二進位。
- 表單資料包括使用者在網頁 (或「HTML 表單」) 中輸入並由 HTTP 傳送 (或「貼文」) 到 Web 伺服器的任何資料。
- 二進位有效負載是除了文字有效負載之外的任何內容。例如,二進制有效負載可以是 .jpeg 檔案、.gzip 檔案或 .xml 檔案。這包括一般二進制資料,例如 .pdf 應用程式、.jpeg 影像或 .zip 應用程式。若要了解所有檔案副檔名類型,請參閱網路號碼分配機構 (IANA) 網站上的媒體類型。
若要識別您的 POST 請求類型,請檢查 HTTP POST 標頭中的 Content-Type 值。例如:
Content-Type: multipart/form-data
根據您的 Content-Type 輸出,查看與您的標題值相符的相應部分。
為 multipart/form-data 內容建立規則
請完成下列步驟:
- 開啟 AWS WAF console (AWS WAF 主控台)。
- 在導覽窗格中,選擇 AWS WAF。
- 選擇 Resources & protection packs (資源和防護套件)。
- 選取您的防護套件。
- 在您選取的防護套件中,選取 Rules (規則)。
- 選取規則旁邊的 View and edit (檢視和編輯),檢視或修改與您的防護套件相關的規則。
- 在管理規則的右側窗格中,選擇 Add rules (新增規則)。
- 選擇 Create new rule (建立新規則)。
- 選擇 Custom rule (自訂規則),然後選取 Next (下一步)。
- 在 Rule Type (規則類型),選擇 Custom rule (速自訂規則),然後選取 Next (下一步)。
- 若要設定規則,請設定以下值:
在 Action (動作),為自訂規則選擇 Block (封鎖)。
在 Name (名稱) 中,輸入可識別此規則的名稱。
在 If a request (如果請求) 中,選擇 matches the statement (比對陳述式)。然後,完成 Statement (陳述式) 的下列欄位:
在 Inspect (檢查),選擇 JSON Body (內文)。
針對 JSON 比對範圍,選擇值。
在 Action for invalid JSON body requests (針對無效 JSON 內文請求的動作),請選擇適合您的選項。
針對要檢查的內容,選擇完整 JSON 內容。
針對比對類型,選擇比對規則表達式。
針對規則表達式,請輸入要比對的 regex 模式。請參閱下列範例:
(?:.pdf|.doc|.docx|.ppt)
- (選用) 在 Text transformation (文字轉換) 新增文字轉換,或將這些欄位保留為 None (無)。
- 對 Oversize Handling (超大型處理),選擇適合您使用案例的相關選項。
- 選擇 Create Rule (建立規則)。
- 選擇 Save (儲存)。
建立二進位值的規則
請完成下列步驟:
- 開啟 AWS WAF console (AWS WAF 主控台)。
- 在導覽窗格中,選擇 AWS WAF。
- 選擇 Resources & protection packs (資源和防護套件)。
- 選取您的防護套件。
- 在您選取的防護套件中,選取 Rules (規則)。
- 選取規則旁邊的 View and edit (檢視和編輯),檢視或修改與您的防護套件相關的規則。
- 在管理規則的右側窗格中,選擇 Add rules (新增規則)。
- 選擇 Create new rule (建立新規則)。
- 選擇 Custom rule (自訂規則),然後選取 Next (下一步)。
- 在 Rule Type (規則類型),選擇 Custom rule (速自訂規則),然後選取 Next (下一步)。
- 若要設定規則,請設定以下值:
在 Action (動作),為自訂規則選擇 Block (封鎖)。
在 Name (名稱) 中,輸入可識別此規則的名稱。
在 If a request (如果請求) 中,選擇 matches the statement (比對陳述式)。
完成 Statement (陳述式) 的下列欄位:
針對檢查,選擇單一標頭。
針對標頭欄位名稱,輸入 Content-Type。
針對比對類型,選擇比對規則表達式。
針對規則表達式,請輸入要比對的 regex 模式。
請參閱以下 .pdf 和 .jpeg 檔案範例:
(?:pdf|jpeg)
- (選用) 在 Text transformation (文字轉換) 新增文字轉換,或將這些欄位保留為 None (無)。
- 選擇 Create Rule (建立規則)。
**注意:**要限制特定上傳 URI 路徑的規則,請使用可檢查路徑的 Web ACL 規則內的 AND 陳述式。