是什么
WAF(Web Application Firewall,Web 应用防火墙):部署在 Web 应用前端,检测和拦截针对 Web 应用的攻击。
与网络防火墙的区别
| 网络防火墙 | WAF | |
|---|---|---|
| 工作层次 | 网络层/传输层(L3/L4) | 应用层(L7) |
| 检查内容 | IP、端口、协议 | HTTP 请求的内容 |
| 防护对象 | 网络边界 | Web 应用漏洞 |
关键:WAF 理解 HTTP 协议,能检查 URL 参数、请求头、Cookie、请求体——这是传统防火墙做不到的。
工作原理
一、基于规则(特征匹配)
维护一个攻击特征库(如 OWASP ModSecurity 核心规则集 CRS):
- SQL 注入特征:
' OR '1'='1、UNION SELECT等; - XSS 特征:
<script>、onerror=等; - 路径穿越:
../..; - 命令注入:
; cat /etc/passwd。
优点:拦截已知的攻击模式,误判可控。
缺点:
- 只能防御已知的、有特征的攻击;
- 容易被绕过(编码变形、注释插入、分片等);
- 需要持续更新规则。
二、异常检测 / 机器学习
建立正常流量的基线,检测偏离基线的异常请求。
优点:可能发现未知攻击。
缺点:误报率高——正常但少见的请求可能被拦截。需要调优。
三、正向安全模型(白名单)
只允许符合预定义规则的请求(如"这个参数只能是数字")。
优点:安全性最高。
缺点:需要精确了解应用的合法输入——配置成本极高,对复杂应用不现实。
四、虚拟补丁(Virtual Patching)
当发现一个漏洞但来不及改代码时,用 WAF 规则临时拦截针对该漏洞的攻击载荷。
这是 WAF 最实用的价值之一——为修复争取时间。
重要:虚拟补丁只是缓解,不能替代修复代码。因为:
- 绕过方式可能被找到;
- 攻击可能通过 WAF 看不到的路径(如内网)。
部署形态
- 云 WAF(如 Cloudflare、阿里云 WAF):DNS 解析到云服务商,流量经过其清洗。部署简单,无需改网络;
- 硬件/软件 WAF:部署在数据中心;
- 反向代理模式(如 Nginx + ModSecurity):灵活,开源方案成本低;
- 主机型 WAF:以模块形式集成在 Web 服务器中。
局限
一、不能替代安全编码
如果应用中存在 SQL 注入漏洞,正确做法是使用参数化查询,而不是依赖 WAF 拦截。
WAF 是一层纵深防御,不是漏洞的替代品。
二、加密流量的可见性
WAF 需要能解密 HTTPS 流量(通常在 WAF 处终止 TLS,再转发到后端)。这带来密钥管理和合规的考虑。
三、绕过风险
有经验的攻击者会尝试绕过 WAF——通过编码、分块传输、HTTP 参数污染等方式。
四、性能影响
所有请求都要检查,会增加延迟。复杂的正则规则可能显著影响性能。
五、误报影响业务
过于激进的规则会拦截正常请求(如用户在表单中输入了包含 SQL 关键字的文本)。
一个务实的定位
WAF 在整体安全中的价值:
一、拦截自动化扫描和"脚本小子"
互联网上有大量自动化的漏洞扫描器在持续扫描暴露的网站。WAF 能拦截其中绝大多数——这些是"机会主义攻击"。
二、虚拟补丁争取时间
三、提供攻击可见性(日志)
但它不是:安全编码的替代品、业务逻辑漏洞的解药、或者对针对性攻击的保证。
说明:本文为 Web 安全的知识整理。