WAF (Web 应用防火墙)
约 5 分钟阅读
最后更新: 2026-09-01
什么是 WAF
WAF (Web Application Firewall) 是检查发往 Web 应用的 HTTP/HTTPS 流量、检测并拦截恶意请求的安全产品。传统防火墙在网络层 (L3/L4) 控制 IP 地址和端口号,而 WAF 在应用层 (L7) 解析 HTTP 请求的内容。
它擅长应对的是 XSS、SQL 注入、目录遍历这类在请求语法本身留下攻击痕迹的攻击。以 OWASP Top 10 的 2025 年版来说,注入 (A05:2025) 中的一部分属于这一类。而排在首位的访问控制缺陷 (A01:2025) 以及设计缺陷 (A06:2025) 这类问题,仅看单条请求无法与正常请求区分,WAF 无法判定。CSRF 的请求本身也看起来正常,因此主要依靠令牌校验等应用侧的对策,WAF 只起辅助作用。WAF 终究是一种缓解手段,不能替代修复应用自身的漏洞。
WAF 的检测方式
- 基于签名 (黑名单方式):与已知攻击模式 (签名) 比对来检测,在请求中查找
SELECT * FROM、<script>等字符串模式。对已知攻击的检出率高,但对未知攻击以及绕过签名的混淆手法较弱。 - 白名单方式:定义正常请求的模式,其余全部拦截。可以应对未知攻击,但如果对正常请求的定义不完整,误报 (False Positive) 就会频发。适用于 API 这类输入格式有严格定义的场景。
- 评分方式:把请求对多条规则的违反程度累加为分数,超过阈值即拦截,可以灵活应对单条规则难以判定的灰色地带攻击。OWASP Core Rule Set (CRS) 的 Anomaly Scoring Mode 采用这种方式:单条规则只负责检测和累加分数,是否拦截要在所有规则都评估完之后统一判断。
- 基于机器学习:学习正常流量模式,把偏离的请求判定为异常。有可能应对未知攻击,但依赖训练数据的质量,误报也不易调优。
WAF 的部署形态
WAF 按部署形态可分为三类。
- 云端型 WAF:先在服务商的网络接收请求,再转发给源站。既有把 DNS 指向反向代理的形式 (如 Cloudflare 的 WAF),也有把 WAF 关联到 CDN 或负载均衡器的形式 (如 AWS WAF)。无需购买专用硬件即可开始使用,而且常与DDoS 攻击防护一起提供。
- 硬件型:在自有网络中部署专用硬件。吞吐量高、可做精细定制,但初期费用高,运维需要专业知识,面向大型企业。
- 软件型 (主机型):作为模块安装在 Web 服务器上。由 OWASP 维护的 ModSecurity 是代表,截至 2026 年 8 月仍以 Apache License 2.0 的开源形式持续开发。可以免费使用,但编写和调优规则需要很高的专业能力。
小型站点适合云端型,需要精细控制的大型环境适合硬件型。如果流量本来就经过 CDN 或负载均衡器,可以在那里关联 WAF,不必改动源站服务器;但启用之后排查误报和调整规则的工作量并不会因此减少。
WAF 运维实践要点
WAF 并非「部署完就结束」,持续调优不可或缺。
- 误报的管理:WAF 最大的运维课题是误报。正常请求一旦被拦截,会直接损害用户体验。启用初期请先用检测模式 (仅记录日志) 而非拦截模式运行,掌握误报模式之后再切换为拦截。
- 规则的定期更新:攻击手法每天都在演变,即使使用托管规则集,也需要定期确认新规则的加入以及既有规则是否仍然有效。
- 作为虚拟补丁使用:在修复版本尚未发布、或自行改造来不及完成的这段时间里,用 WAF 拦截利用该漏洞的请求。它也被用作零日攻击的初期应对手段,但这只是争取到修复完成之前的时间;攻击请求的写法一改就可能绕过。它并不能替代修复本身。
- 日志分析:WAF 的日志是排查安全事件时不可缺少的材料。请分析被拦截请求的模式,掌握攻击的走向。
- 与 CSP 并用:WAF 在服务器侧过滤请求,而 CSP 在浏览器侧限制脚本执行。两者结合可以对 XSS 形成纵深防御。
WAF 并不能从根本上修复应用的漏洞。不要完全依赖 WAF,而应与安全编码、输入校验、参数化查询等应用侧的对策并用。
常见误解
- 部署 WAF 就完成了 Web 应用的漏洞防御
- WAF 可以缓解已知的攻击模式,但应用自身的漏洞依然存在。绕过 WAF 规则的手法也确实存在,因此从根本上修复漏洞和安全编码不可或缺。
- WAF 能防止所有 Web 攻击
- 滥用业务逻辑 (违规折扣操作、权限提升等) 以及窃取认证信息 (钓鱼) 这类与正常请求无法区分的攻击,WAF 无法检测。WAF 擅长的是检测 SQL 注入、XSS 这类在语法上异常的请求。
云端型 WAF 与硬件型 WAF 的比较
云端型 WAF
通过切换 DNS 或关联到 CDN、负载均衡器即可启用。无需专用硬件,初期费用容易控制,而且常与 DDoS 防护一起提供,托管规则也使运维负担较低。但定制自由度取决于厂商,按流量计费也可能使成本上升。
硬件型 WAF
部署在自有网络内。吞吐量高,规则可做精细定制。但初期费用高,编写和调优规则需要专业知识,硬件的维护与更新也需自行负责。