Share via


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

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

重要

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

限制

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

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

只有內容類型為 multipart/form-data 的要求才會被視為檔案上傳。 若要將內容視為檔案上傳,它必須是具有檔名標頭的多部分窗體的一部分。 對於所有其他內容類型,會套用要求本文大小限制。

注意

如果您正在執行核心規則集 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 應用程式防火牆 的模式,以及您使用的 Managed 規則集版本。

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

疑難排解

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

強制執行要求本文檢查

  • PS:“RequestBodyCheck”
  • CLI:“request_body_check”
  • 控制您的 Web 應用程式防火牆 是否會檢查要求本文,並根據您的 Web 應用程式防火牆 原則設定,將受控和自定義規則套用至要求主體流量。

要求主體檢查限制上限 (KB)

  • PS:“RequestBodyInspectLimitInKB”
  • CLI:“request_body_inspect_limit_in_kb”
  • 控制要求主體 Web 應用程式防火牆 將檢查並套用 Managed/自定義規則的深度。 一般而言,您會想要將此值設定為最大可能設定,但有些客戶可能會想要將它設定為較低的值,以改善效能。

強制執行要求主體限制上限

  • PS:“RequestBodyEnforcement”
  • CLI:“request_body_enforcement”
  • 控制您的 Web 應用程式防火牆 是否會對要求主體強制執行大小上限;關閉時,將不會拒絕任何太大的要求。

要求主體大小上限 (KB)

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

強制執行檔案上傳上限

  • PS:“FileUploadEnforcement”
  • CLI:“file_upload_enforcement”
  • 控制您的 Web 應用程式防火牆 是否會對檔案上傳強制執行大小上限;關閉時,將不會拒絕任何檔案上傳,因為檔案上傳太大。

檔案上傳大小上限 (MB)

  • PS:“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='2000' policySettings.max_request_body_size_in_kb='2000' policySettings.file_upload_limit_in_mb='3500' --query policySettings -o table

輸出:

FileUploadEnforcement    FileUploadLimitInMb    MaxRequestBodySizeInKb    Mode       RequestBodyCheck    RequestBodyEnforcement    RequestBodyInspectLimitInKB    State
-----------------------  ---------------------  ------------------------  ---------  ------------------  ------------------------  -----------------------------  -------
True                     3500                   2000                      Detection  True                True                      2000                           Enabled

下一步