TMA-IIS-4.3
Ensure 'MaxQueryString request filter' is configured
Description
The MaxQueryString Request Filter describes the upper limit on the length of the query string that the configured IIS server will allow for websites or applications. It is recommended that values always be established to limit the amount of data that can be accepted in the query string. requestLimits maxQueryString must be 2048 or lower at server level and for every site (default 2048). PowerShell 5.1 with the WebAdministration module; run elevated.
How it is checked
Audit method: Shell command
Import-Module WebAdministration -ErrorAction Stop; $paths = @('MACHINE/WEBROOT/APPHOST') + @(Get-Website | ForEach-Object { "IIS:\Sites\$($_.Name)" }); $bad = @($paths | Where-Object { $c = Get-WebConfiguration -Filter 'system.webServer/security/requestFiltering/requestLimits' -PSPath $_; [long]$c.maxQueryString -gt 2048 }); if ($bad.Count -eq 0) { 'compliant' } else { 'noncompliant' }- Expected output
compliant
How it is fixed
Fix method: Guidance or infrastructure patch
Set-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter system.webServer/security/requestFiltering/requestLimits -Name maxQueryString -Value 2048
Properties
- Operating systems
- Any
- Tags
- iisrequest-filtering
- Reference
- CIS Microsoft IIS 10 Benchmark v1.2.1 - 4.3 Ensure 'MaxQueryString request filter' is configured
Check this host
Run this on a machine you are allowed to audit. The scan is read-only.
tmaegis scan --target iis --level 2