过载保护与来源识别
先保住自己,再谈防护。
- 在途请求数超过阈值直接返回 503 卸载,防止过载雪崩拖垮整机
- 基于可信代理(trusted_proxies)从转发头还原真实客户端 IP,杜绝伪造 XFF 绕过与误封
从请求进入到回源落地,墨守做了什么、为什么这么做、以及它拒绝做什么。
安全与体验兼顾:前置层可秒级卸下恶意流量、不占用后续资源;成本高的检测放在后面,此时流量已经很干净。
先保住自己,再谈防护。
命中即拒,不消耗后续任何资源。
核心差异化:单接口颗粒度管控,不一刀切。
对可疑客户端主动介入,正常用户近乎无感。
超限流量不报错,排队匀速放行。
语义引擎 + 机器学习 + 规则互补,三层协同。
安全校验通过后优先匹配缓存,命中不回源。
未登录不放行,正常流量分发到健康上游。
八大类能力,全部为授权范围内开放,不做套路阉割。
摒弃仅靠正则匹配的老旧防护,语义 / 机器学习 / 规则三层协同。
| 能力 | 说明 |
|---|---|
| 强归一化层 | URL / Unicode / HTML 实体解码、多重编码递归解码、大小写与注释规整 |
| 语义分析引擎 | 语法解析 + AST 判定,覆盖 SQL 注入、XSS、命令注入 / RCE、路径穿越、SSRF、XXE、反序列化、模板注入、CRLF、NoSQL / LDAP / XPath 注入、代码注入、恶意文件上传等多类攻击 |
| 机器学习检测层 | 轻量化模型对可疑请求异常打分,补语义未命中,识别模拟真人的自动化与变异流量 |
| 规则互补层 | OWASP CRS 提供虚拟补丁、CVE 防护、扫描器识别、出站泄露检测 |
| 未知威胁 / 0day | 语义定位不依赖规则库,靠攻击语法结构识别未知变种 |
| 多引擎打分聚合 | 各检测器加权打分,阈值决策放行 / 拦截 / 挑战 |
| 灰度上线机制 | 影子模式先观测、后强制,逐检测器数据驱动上线 |
| 自定义规则 | 支持编写自定义安全规则,灵活扩展防护策略 |
| 大文件流式检测 | 上传大文件时流式检测,检测窗口与体积上限解耦,不整体驻留内存 |
| 故障自保护 | 检测引擎异常时可配置放行(fail-open),WAF 自身故障不阻断业务 |
我们把测试环境、并发、时长与口径一起写出来。脱离条件的 QPS 数字没有意义。
| 总请求 / 错误 | 257,683 / 0 |
| QPS | ~32,200 |
| 延迟 p50 | 1.2 ms |
| 延迟 p90 | 2.8 ms |
| 延迟 p99 | 4.8 ms |
| 延迟 max | 6.7 ms |
| ns/op | ~13,500 (13.5µs) |
| B/op | ~10,100 |
| allocs/op | ~70 |
一个正常请求走完 build ctx + 归一化 + SQLi/XSS 检测的成本(含 httptest 构造开销, 检测净成本远小于此)。检测引擎对每请求的增量在十几微秒级,相对反代转发可忽略。
测试条件:开发机(Windows,16 逻辑核,Go 1.25,GOGC=200)本地回环,并发 50 持续 8s,经完整数据面(检测 + 反向代理)打到 echo 上游。绝对值随硬件、上游与配置变化,此处反映的是性能量级与回归趋势,不作为生产承诺值。生产压测建议使用 wrk / vegeta / k6,在目标硬件与真实上游下测量。
它挡在你所有流量的最前面。所以它自己的可靠性,比它的功能列表更重要。
检测引擎异常时可配置 fail-open 放行;在途请求超阈值直接 503 卸载,防止过载雪崩拖垮整机。WAF 挂了,你的站不该跟着挂。
每类检测都能以影子模式只记录不拦截,在真实流量上比对差异后再切强制。限速、缓存、等候室、人机验证同样支持试运行。
自动缓存前对多个不同客户端的响应做一致性抽样,只有响应一致才缓存;严格遵循 Cache-Control,绝不缓存个性化 / 认证响应。