如何使用AWS WAF拦截user-agent头不为Java/1.8的请求
AWS WAF拦截非指定User-Agent落地配置
配置原则
无需依赖WAF不支持的环视类正则语法,也不需要在匹配类型中寻找「Not equal」选项,通过WAF自带的匹配条件取反逻辑即可实现需求,具体方案如下:
方案1:字符串完全匹配配置(推荐,精度最高)
- 新建WAF规则,选择匹配字段为
User-Agent请求头 - 匹配类型选择「字符串匹配」,匹配逻辑为完全匹配指定字符串
- 匹配值填写
Java/1.8 - 开启匹配条件的否定匹配结果开关(该开关位于匹配条件配置面板底部,为容易被忽略的配置项)
- 规则动作设置为拦截,可将规则优先级调至最高,确保优先于其他放行规则生效
方案2:兼容WAF正则规范的实现(适用于后续多UA扩展场景)
如果需要使用正则能力扩展规则,可完全避开零宽断言的限制:
- 放弃原本带环视的反向正则写法
^((?!Java\/1.8).)*$,改为正向写目标UA的正则表达式^Java/1\.8$ - 将该正则配置为WAF正则匹配规则,匹配字段仍为
User-Agent请求头 - 开启规则的「否定匹配结果」开关,动作设置为拦截
- 后续如果需要新增放行的UA,可直接在正则中扩展匹配逻辑(例如用
|拼接多个匹配规则),再统一做取反拦截即可,无需修改核心逻辑
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

