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

適用於: ✔️應用閘道 v2

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

限制

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

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

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

附註

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

範例: 如果你設定了優先權 1(最高優先權)的自訂規則,允許標頭為 xyz 的請求,即使請求大小超過最大請求大小限制,也會在最大大小限制被執行前被允許

附註

檔案上傳上限有 4 KB 緩衝區。 在檔案上傳超過您設定的限制加上此緩衝區之前,不會強制執行檔案大小限制。

要求本文檢查

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"
  • 控制您的網頁應用防火牆是否對請求實體施加最大容量限制;關閉後不會因為太大而拒絕任何請求。

要求本文大小上限 (KB)

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

強制執行檔案上傳上限

  • PowerShell: "FileUploadEnforcement"
  • CLI: "file_upload_enforcement"
  • 控制你的網頁應用防火牆是否對檔案上傳設定最大大小限制;關閉後,它不會因為檔案太大而拒絕上傳。

檔案上傳大小上限 (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

後續步驟