WAF本质:神经末梢式主动防御体系
将WAF理解为“保安”是恰当的——它不裁决,只拦截;不存储,只过滤;不深挖,只识别。其核心逻辑可凝练为两个动作:请求捕获与规则匹配。当HTTP/HTTPS流量抵达服务器前,WAF会实时解析请求包,依据预定义规则库进行特征比对,一旦命中(如`SELECT FROM users`、``
浏览器会逐层解码,最终执行;而WAF若仅解码一次,则无法识别。
POST /search?q=%26%2360;script%26%2362;alert%281%29%26%2360;%2Fscript%26%2362;
WAF解析后:
<script>alert(1)</script>
浏览器最终执行:
协议歧义攻击
HTTP/1.1与HTTP/2对Header字段的处理不同。攻击者可利用HTTP/2的Header压缩(HPACK)或字段名大小写混合,使WAF无法正确匹配规则。例如:
`X-Forwarded-For: 127.0.0.1` vs `x-forwarded-for: 127.0.0.1`
内核特性滥用
利用浏览器内核的“容错机制”:
• HTML5解析容错:``中`onerror`无需引号
• URL解析差异:`http://example.com/;/../admin`在部分浏览器中会被解析为`/admin`
• WebSocket协议混淆:将XSS载荷封装于WebSocket帧中,绕过HTTP层WAF
技术演进:从特征匹配到语义解析
面对复杂绕过,现代WAF已引入:
• 上下文感知:区分HTML、JS、CSS、URL中的注入点,实施差异化过滤
• AST抽象语法树分析:对JavaScript代码进行静态分析,识别`Function()`构造器调用等高危行为
• 浏览器模拟沙箱:在WAF侧部署轻量级无头浏览器,实时渲染请求并检测DOM异常
检测技术:从DPI到AI的三层防御
许多运维者误以为WAF依赖深度包检测(DPI)实现防御。实则不然——DPI是辅助工具,而非核心逻辑。WAF的检测能力主要依赖三层机制:
规则引擎:高效但易被绕过
基于正则表达式与预定义规则库(如OWASP CRS)进行匹配。典型规则包括:
• SQL注入:`(?i)(bselectb|bunionb|borb=)`
• XSS:`(?i)(