Azure Front Door WAF规则已禁用仍拦截请求问题排查
问题分析与解决方案
核心问题1:排除规则未覆盖URL中的令牌参数
你的当前排除规则仅针对RequestCookieNames(Cookie中的access-token),但令牌是通过URL传递的,WAF依然会扫描URL路径/查询参数中的内容,触发SQL注入检测规则。
需要添加对应URL场景的排除规则:
- 如果令牌在查询参数中(如
?token=xxx--xxx),添加QueryStringArgNames类型的排除 - 如果令牌在URL路径中(如
/api/xxx--xxx/resource),添加RequestUri类型的排除
核心问题2:规则配置的冗余冲突
你同时设置了enabledState: 'Disabled'和action: 'Allow',虽然逻辑上禁用规则会让WAF跳过检测,但冗余设置可能导致配置解析异常(旧API版本中动作优先级可能高于禁用状态)。建议只保留enabledState: 'Disabled'即可。
验证配置部署状态
确认WAF策略已成功部署并同步到所有Front Door节点。有时门户拦截日志存在延迟,或配置未完全生效,可等待10-15分钟后再测试。
修正后的配置示例
resource wafPolicy 'Microsoft.Network/FrontDoorWebApplicationFirewallPolicies@2019-10-01' = { name: wafPolicyName location: frontdoorLocation tags: tags properties: { policySettings: { mode: 'Prevention' enabledState: 'Enabled' } managedRules: { managedRuleSets: [ { ruleSetType: 'DefaultRuleSet' ruleSetVersion: '1.0' ruleGroupOverrides: [ { ruleGroupName: 'SQLI' rules: [ { ruleId: '942200' enabledState: 'Disabled' } { ruleId: '942440' enabledState: 'Disabled' } ] } ] exclusions: [ // 保留Cookie的排除规则 { matchVariable: 'RequestCookieNames' selectorMatchOperator: 'Equals' selector: 'access-token' }, // 添加URL查询参数的排除(替换为实际令牌参数名) { matchVariable: 'QueryStringArgNames' selectorMatchOperator: 'Equals' selector: 'token' }, // 若令牌在URL路径中,添加路径匹配排除(替换为实际特征段) { matchVariable: 'RequestUri' selectorMatchOperator: 'Contains' selector: 'token-segment' } ] } ] } } }
额外排查点
- 查看WAF日志确认是否有其他SQL注入规则(如942100、942110)也会检测
--字符,必要时同步禁用或排除 - 确认WAF策略已正确关联到Front Door终结点
内容的提问来源于stack exchange,提问作者mcool
相关产品推荐
相关产品推荐

