WAF 的工作原理
WAF 通常作为反向代理部署在 CDN 或托管服务的边缘节点,也可以部署在应用服务器附近。每个 HTTP 请求都要经过检查,获准的流量才会转发给应用。
对于 HTTPS 流量,连接必须在抵达 WAF 前或由 WAF 解密,WAF 才能检查请求。WAF 会根据规则放行、记录、拦截请求,对客户端限速或要求客户端完成验证。因此,拒绝响应可能来自 WAF,而非应用本身。
WAF 检查哪些内容
- **请求结构:**HTTP 方法、URL 路径、查询字符串、标头、Cookie 和请求正文大小。
- **攻击特征:**与 SQL 注入、跨站脚本、路径遍历和不安全文件上传相关的输入。
- **客户端上下文:**来源 IP 信誉、地区、请求速率和过往活动。
- **自动化信号:**异常的浏览路径、缺少浏览器功能或指纹不一致。这类检查通常来自集成的 机器人检测 功能,而非基础 WAF 规则。
规则可以采用精确匹配、已知攻击特征或风险评分。配置不当的规则可能会拦截正常客户端,因此网站运营方通常会查看日志并针对具体规则做精细调整,而不是直接关闭防护。
WAF 与传统网络防火墙的区别
以下比较针对常规的第 3/4 层网络防火墙。下一代防火墙也可能检查 HTTP 和其他应用层流量。
| 功能 | WAF | 传统网络防火墙 |
|---|---|---|
| 层级 | HTTP 应用流量 | 网络和传输层流量 |
| 检查内容 | URL、标头和正文 | IP、端口和协议 |
| 保护对象 | Web 应用和 API | 主机和网络 |
| 主要局限 | 无法修复存在漏洞的代码 | 无法解析 HTTP 内容 |
两种控制措施可以同时使用。传统网络防火墙可能允许端口 443 上的 HTTPS 流量,而 WAF 会拒绝通过该连接发送的某个特定请求。
访问受 WAF 保护的网站时使用代理
代理会改变 WAF 看到的来源 IP,但不会改变 Cookie、请求模式、浏览器指纹或应用行为。流量违反策略时,WAF 或关联的 CDN 可能返回 403 Forbidden、显示验证码或限速。
要遵守这些限制,可采取以下措施:
- 采集数据前,先查看网站条款和公开的采集工具规则。
- 应降低请求频率和并发,而不是通过轮换 IP 规避限制。
- 网站返回 429 Too Many Requests 时,应按
Retry-After指定的时间重试。 - 测试自己的应用时,查看 WAF 事件日志和规则 ID;如有需要,将受控测试 IP 地址加入 IP 白名单。
常见问题
WAF 能拦截代理流量吗?
能,但不会仅仅因为使用了代理就拦截流量。如果某个 IP 信誉不佳、承载过多共享流量,或者请求符合安全和自动化检测规则,WAF 可能会将其拦截。
WAF 会返回 403 或 429 错误吗?
两种错误都可能返回。403 通常表示规则拒绝了请求,429 则表示客户端超过请求限制。
WAF 和 机器人检测是一回事吗?
不是。WAF 主要过滤恶意 HTTP 请求,机器人检测则判断客户端是否为自动化程序及其行为方式。许多安全平台会同时提供这两项功能。