AWS WAF 如何处理对 HTTP 请求的正文检查?
解决方法
AWS WAF 会检查请求正文的前 8KB(8,192 字节)。这是一项硬性服务限制,无法更改。
例如:
- **如果正文为 5,000 字节:**AWS WAF 可检查正文中的所有内容。
- **如果正文为 8,500 字节:**AWS WAF 可检查 1 到 8,192 字节的内容。从 8,193 字节到 8,500 字节的所有内容均不检查。
此限制在配置规则时非常重要,因为 AWS WAF 无法检查 8,192 字节后的正文内容。8,192 字节后的任何攻击 XSS 或 SQL 注入模式都不会被检测到。
要防止未经检查的正文部分受到攻击,请使用以下方法之一:
AWS Managed Rules Core 规则集
AWS Managed Rules Core 规则集(CRS)中的 SizeRestrictions_BODY 规则可检查大于 8KB(8,192 字节)的请求正文。超过 8KB 的请求正文将被阻止。
自定义正文检查规则
配置自定义主体检查规则时,可以选择超大请求处理操作。当请求正文大于 8,192 字节时,此操作生效。
例如,使用包含 XSS 注入攻击的请求正文配置自定义规则,请求正文为 9,000 字节。您可以从以下超大尺寸处理操作中进行选择:
- Continue(继续):AWS WAF 检查 1 到 8,192 字节的正文内容是否存在 XSS 攻击。剩余的 8,193 到 9,000 字节的内容不检查。
- Match(匹配):AWS WAF 将此请求标记为包含 XSS 攻击,并采取规则操作 [ALLOW(允许)或 BLOCK(阻止)]。这与请求正文是否包含 XSS 攻击模式无关。
- Not match(不匹配):无论请求正文内容如何,AWS WAF 都将此请求标记为不包含 XSS 攻击。
使用 AWS Managed Core 规则集时,正文大小超过 8,192 字节的合法请求可能会被 SizeRestrictions_BODY 规则阻止。您可以创建允许规则以显式允许该请求。
例如,如果客户有来自 URL“/upload”的合法请求,则可以按如下方式配置规则:
1. 在您的 Web ACL 中,覆盖 SizeRestrictions 操作以从规则组中执行 Count(计数)操作。
2. 在 Core rule set(Core 规则集)之后,将标签匹配规则添加到 Web ACL。在规则中使用以下逻辑:
Has a label “awswaf:managed:aws:core-rule-set:SizeRestrictions_Body”
AND
NOT (URL path contains “/upload”)
Action: BLOCK
使用上述配置,允许主体大小超过 8,192 字节的 URL 为“/upload”的请求。任何不是来自此 URL 的请求都将被阻止。
相关信息
请求组件的超大处理