Web 安全
WAF (Web 应用防火墙)
约 5 分钟阅读
最后更新: 2026-03-05
什么是 WAF
WAF (Web Application Firewall) 是一种安全产品,检查发往 Web 应用的 HTTP/HTTPS 流量,检测并阻止恶意请求。传统防火墙在网络层 (L3/L4) 控制 IP 地址和端口号,而 WAF 在应用层 (L7) 分析 HTTP 请求的内容。
它可以防御 XSS、SQL 注入、CSRF、目录遍历等 Web 应用特有的攻击。OWASP Top 10 中列出的大多数漏洞都可以通过 WAF 缓解。但 WAF 只是「缓解措施」,不能替代修复应用本身的漏洞。
WAF 的检测方式
- 基于签名 (黑名单方式):与已知攻击模式 (签名) 进行匹配检测。在请求中检测
SELECT * FROM或<script>等字符串模式。对已知攻击检测率高,但对未知攻击或绕过签名的混淆技术较弱。 - 白名单方式:定义正常请求的模式,阻止其他所有请求。可以应对未知攻击,但如果正常请求的定义不完整,会产生大量误报。适用于输入格式严格定义的场景,如 API。
- 评分方式:对多个规则的违规程度进行评分累加,阻止超过阈值的请求。可以灵活应对单一规则难以判定的灰色地带攻击。ModSecurity 的 Anomaly Scoring Mode 采用此方式。
- 基于机器学习:学习正常流量模式,将偏离的请求检测为异常。有可能应对未知攻击,但依赖训练数据质量,误报调整困难。
WAF 的部署形态
WAF 按部署形态分为三类。
- 云端型 WAF:通过修改 DNS 将流量路由经过云端 WAF。AWS WAF、Cloudflare WAF、Akamai 是代表性产品。部署简便,通常集成了 DDoS 攻击防护。初始成本低,按月计费。
- 硬件型:在网络上安装专用硬件。提供高吞吐量和精细的自定义能力,但初始成本高,运维需要专业知识。适合大型企业。
- 软件型 (主机型):作为模块安装在 Web 服务器上。ModSecurity 是代表性产品。开源免费,但规则创建和调优需要高度专业性。
小型站点适合云端型,需要精细控制的大型环境适合硬件型。在 AWS 环境中,AWS WAF 可以与 CloudFront 或 ALB 集成,无需基础设施变更即可部署。
WAF 运维实践要点
WAF 不是「部署即完成」,持续调优不可或缺。
- 误报管理:WAF 最大的运维挑战是误报。阻止合法请求会直接损害用户体验。初始部署时以检测模式 (仅记录日志) 运行,了解误报模式后再切换到阻止模式。
- 定期更新规则:攻击手法日新月异,即使使用托管规则集,也需要定期确认新规则的添加和现有规则的有效性。
- 日志分析:WAF 日志对安全事件调查不可或缺。分析被阻止请求的模式,掌握攻击趋势。
- 与 CSP 配合:WAF 在服务器端过滤请求,CSP 在浏览器端限制脚本执行。两者结合可实现对 XSS 的纵深防御。
WAF 不能从根本上修复应用的漏洞。不要完全依赖 WAF,重要的是与安全编码、输入验证、参数化查询等应用层面的防御措施配合使用。
常见误解
- 部署 WAF 就完成了 Web 应用的漏洞防御
- WAF 缓解已知攻击模式,但应用本身的漏洞仍然存在。绕过 WAF 规则的技术也存在,因此根本性的漏洞修复和安全编码不可或缺。
- WAF 能防止所有 Web 攻击
- 业务逻辑滥用 (非法折扣操作、权限提升等) 和认证信息窃取 (钓鱼) 等与正常请求无法区分的攻击,WAF 无法检测。WAF 擅长检测的是 SQL 注入和 XSS 等语法异常的请求。
云端型 WAF 与硬件型 WAF 的比较
云端型 WAF
通过 DNS 变更即可部署。初始成本低,集成 DDoS 防护。托管规则降低运维负担。但自定义灵活性取决于供应商,按流量计费可能导致成本增加。
硬件型 WAF
安装在企业网络内部。提供高吞吐量和精细的规则自定义。但初始成本高,规则创建和调优需要专业知识。硬件的维护和更新也需自行处理。
分享