Web 應用程式防火牆要求和檔案上傳大小限制

Web 應用程式防火牆可讓您設定上下限內的要求大小限制。 執行核心規則集 3.2 或更新版本的應用程式閘道 Web 應用程式防火牆具有更多的要求和檔案上傳大小控制項,包括可停用要求和/或檔案上傳的大小上限強制執行。

重要

我們正在針對執行核心規則集 3.2 或更新版本的應用程式閘道 v2 Web 應用程式防火牆部署新功能,以更充分地控制您的要求本文大小、檔案上傳大小和要求本文檢查。 如果正在執行具有核心規則集 3.2 或更新版本的應用程式閘道 v2 Web 應用程式防火牆,而且您注意到要求因大小限制而遭拒 (或未遭拒),請參閱此頁面底部的疑難排解步驟。

限制

要求本文大小欄位和檔案上傳大小限制在 Web 應用程式防火牆內皆可設定。 要求本文大小欄位的上限是以 KB 為單位指定,而且控制整體的要求大小限制,但不包括任何檔案上傳。 檔案上傳限制欄位是以 MB 為單位予以指定,並控管允許的檔案上傳大小上限。 如需要求大小限制和檔案上傳大小限制,請參閱應用程式閘道限制

針對執行核心規則集 3.2 或更新版本的應用程式閘道 v2 Web 應用程式防火牆,可以停用要求本文大小上限強制執行和檔案上傳大小上限強制執行,而且 Web 應用程式防火牆不會再因太大而拒絕要求或檔案上傳。 在 Web 應用程式防火牆內停用要求本文大小上限強制執行和檔案上傳大小上限強制執行時,應用程式閘道的限制可決定允許的大小上限。 如需詳細資訊,請參閱應用程式閘道限制

系統僅會將 Content-Type 為 multipart/form-data 的要求視為要進行檔案上傳。 若要將內容視為檔案上傳,內容必須是多部分表單的一部分,並具有 filename 標頭。 對於所有其他內容類型,會套用要求本文大小限制。

注意

如果您正在執行核心規則集 3.2 或更新版本,而且您有高優先順序自訂規則會根據要求的標頭、Cookie 或 URI 內容來採取動作,則這將會優先於任何要求大小上限或檔案上傳大小上限、限制。 此最佳化讓 Web 應用程式防火牆執行不需要先讀取完整要求的高優先順序自訂規則。

範例:如果您具有優先順序 0 的自訂規則 (最高優先順序) 設定為允許具有標頭 xyz 的要求,則即使要求的大小大於您的要求大小上限,還是會在強制執行大小上限之前允許此規則

要求本文檢查

Web 應用程式防火牆提供組態設定,以啟用或停用要求本文檢查。 根據預設,要求本文檢查是啟用的。 如果停用要求本文檢查,則 Web 應用程式防火牆不會評估 HTTP 訊息本文的內容。 在這種情況下,Web 應用程式防火牆會繼續對標頭、Cookie 和 URI 強制執行 Web 應用程式防火牆規則。 在執行核心規則集 3.1 (或更低版本) 的 Web 應用程式防火牆中,如果關閉要求本文檢查,則要求本文大小上限欄位不適用,並且也無法設定。

針對執行核心規則集 3.2 (或更新版本) 的原則 Web 應用程式防火牆,可以啟用/停用與要求本文大小強制執行和檔案上傳大小限制無關的要求本文檢查。 此外,執行核心規則集 3.2 (或更新版本) 的原則 Web 應用程式防火牆可以設定與要求本文大小上限無關的最大要求本文檢查限制。 要求本文檢查上限會告訴 Web 應用程式防火牆應該檢查並套用規則的要求深度;設定此欄位的較低值可以改善 Web 應用程式防火牆效能,但可能會允許未檢查的惡意內容通過 Web 應用程式防火牆。

針對執行核心規則集 3.1 (或更低版本) 的舊版 Web 應用程式防火牆,關閉要求本文檢查可讓大於 128 KB 的訊息傳送至 Web 應用程式防火牆,但不會檢查訊息本文是否有弱點。 針對執行核心規則集 3.2 或更新版本的原則 Web 應用程式防火牆,您可以停用要求本文上限來達到相同的結果。

若 Web 應用程式防火牆收到超過大小限制的要求,行為取決於 Web 應用程式防火牆的模式,以及您使用的受控規則集版本。

  • 若 Web 應用程式防火牆原則處於預防模式,Web 應用程式防火牆會記錄並封鎖超過大小限制的要求和檔案上傳。
  • 若 Web 應用程式防火牆原則處於偵測模式,Web 應用程式防火牆最多只會檢查到所指定限制內的本文,並忽略其餘部分。 如果 Content-Length 標頭存在並且大於檔案上傳限制,則 Web 應用程式防火牆會忽略整個本文,並記錄要求。

疑難排解

如果您是執行核心規則集 3.2 或更新版本的應用程式閘道 v2 Web 應用程式防火牆客戶,而且發生要求、檔案上傳或因大小上限而不正確地遭拒的問題,或如果您看到未完整檢查要求,則可能需要確認已正確設定所有值。 使用 PowerShell 或 Azure 命令列介面,您可以確認每個值都設定為哪些值,並視需要更新任何值。

強制執行要求本文檢查

  • PowerShell: "RequestBodyCheck"
  • CLI: "request_body_check"
  • 控制 Web 應用程式防火牆是否檢查要求本文,並根據 Web 應用程式防火牆原則的設定,將受控和自訂規則套用至要求本文流量。

要求本文檢查上限 (KB)

  • PowerShell: "RequestBodyInspectLimitInKB"
  • CLI: "request_body_inspect_limit_in_kb"
  • 控制 Web 應用程式防火牆檢查並套用受控/自訂規則的要求本文深度。 一般而言,您會想要將此值設定為最大可能設定,但有些客戶可能會想要將其設定為較低的值,以改善效能。

強制執行要求本文上限

  • PowerShell: "RequestBodyEnforcement"
  • CLI: "request_body_enforcement"
  • 控制 Web 應用程式防火牆是否對要求本文強制執行大小上限;關閉時,其不會因太大而拒絕任何要求。

要求本文大小上限 (KB)

  • PowerShell: "MaxRequestBodySizeInKB"
  • CLI: "max_request_body_size_in_kb"
  • 控制要求本文在 Web 應用程式防火牆因超過大小上限設定而將其拒絕之前的大小。

強制執行檔案上傳上限

  • PowerShell: "FileUploadEnforcement"
  • CLI: "file_upload_enforcement"
  • 控制 Web 應用程式防火牆是否對檔案上傳強制執行大小上限;關閉時,其不會因太大而拒絕任何檔案上傳。

檔案上傳大小上限 (MB)

  • PowerShell: "FileUploadLimitInMB"
  • CLI: file_upload_limit_in_mb
  • 控制檔案上傳在 Web 應用程式防火牆因超過大小上限設定而將其拒絕之前的大小。

注意

已檢查要求本文並套用規則時,以及已在要求本文上強制執行大小上限時,先前所控制的「檢查要求本文」。 現在,這由兩個可獨立開啟/關閉的不同欄位所處理。

PowerShell

您可以使用下列 PowerShell 命令來傳回您的 Azure 原則,並查看其目前的設定。

$plcy = Get-AzApplicationGatewayFirewallPolicy -Name <policy-name> -ResourceGroupName <resourcegroup-name>
$plcy.PolicySettings

您可以使用這些命令,以將原則設定更新為檢查限制和大小上限相關欄位所需的值。 您可以在下列範例中交換 'RequestBodyEnforcement',以取得您想要更新的其中一個其他值。

$plcy = Get-AzApplicationGatewayFirewallPolicy -Name <policy-name> -ResourceGroupName <resourcegroup-name>
$plcy.PolicySettings.RequestBodyEnforcement=false
Set-AzApplicationGatewayFirewallPolicy -InputObject $plcy

命令列介面

您可以使用 Azure CLI 以傳回 Azure 原則設定中這些欄位的目前值,並使用這些命令以將欄位更新為所需的值。

az network application-gateway waf-policy update --name <WAF Policy name> --resource-group <WAF policy RG> --set policySettings.request_body_inspect_limit_in_kb='128' policySettings.max_request_body_size_in_kb='128' policySettings.file_upload_limit_in_mb='100' --query policySettings -o table

輸出:

FileUploadEnforcement    FileUploadLimitInMb    MaxRequestBodySizeInKb    Mode       RequestBodyCheck    RequestBodyEnforcement    RequestBodyInspectLimitInKB    State
-----------------------  ---------------------  ------------------------  ---------  ------------------  ------------------------  -----------------------------  -------
True                     100                   128                      Detection  True                True                      128                           Enabled

下一步