WAF 与安全规则引擎

Web Application Firewall

帮你挡住针对网站代码漏洞的攻击,比如 SQL 注入和跨站脚本,像给网站套了一层筛子。

安全与身份出现时间 · 2013 年前后免费版含受管规则集与基础限速;高级 Bot 管理与自定义规则需 Pro 及以上。WAFSQL 注入XSSBot 管理
看官方文档

01 它是干嘛的

WAF 工作在应用层,专门检查每一个 HTTP 请求的内容是否符合「明显的攻击特征」。它不依赖你的代码是否写得安全,而是在请求到达代码之前就拦掉可疑请求,是修漏洞之外的第二道防线。

02 为什么会有它

为什么代码里的一个小漏洞,能让整个数据库被拖走

网站开发者常常犯两类错误:一是把用户输入直接拼进数据库语句(SQL 注入),攻击者输入一段特殊字符就能绕过验证、把整张用户表读走;二是把用户输入直接显示在页面上(XSS),攻击者可以注入一段脚本,盗取其他访客的登录态。

理想情况是修好每一行代码,但现实是系统由几十个团队、几百万行代码构成,还有大量无法改动的历史系统与第三方组件。漏洞公告每天都有,补丁永远追不上。

WAF 的思路是「在门口设安检」:不管屋里的人是否可靠,先检查每个进去的人。它积累了大量已知攻击的特征,也能用机器学习判断哪些请求行为异常(例如一个 IP 每分钟枚举上千个用户名)。Cloudflare 的优势在于这些规则在边缘执行,不占用你的服务器资源,并且规则库由全球数百万网站的攻击数据持续更新。

03 它怎么工作

WAF 是分层叠加的:托管规则库(已知攻击)、自定义规则(你的业务逻辑)、速率限制(异常频率)、Bot 评分(自动化程序),任何一个命中都可以选择拦截或挑战。

请求进站前的四道筛子① 逐层检查② 通过③ 拒绝进来的请求正常用户 + 攻击者混在一起速率限制同一 IP 刷太快就挑战托管规则库已知攻击特征Bot 评分行为是否像脚本放行正常请求拦截命中攻击特征源站只收到干净的请求最佳实践:先开「仅记录」跑几天,确认不误杀之后再切「拦截」。正常工作流被拦下的攻击判定核心
从左到右看流量被逐层过滤:绿色是放行的正常请求,黄色是被挑战的可疑请求,红色是被直接拦截的攻击。

请求进站前的四道筛子

  1. 1
    ① 请求到达最近边缘节点

    因为流量本来就走 CDN 通道,检查不带来额外网络跳数,几乎不增加延迟。

  2. 2
    ② 托管规则库匹配

    用 OWASP 核心规则集等特征库匹配参数里的 SQL 关键字、脚本标签、路径穿越等常见攻击形态。

  3. 3
    ③ 自定义规则与限速

    按你的业务特征写规则,例如「登录接口单 IP 每分钟超过 10 次就挑战」「后台路径仅允许公司出口 IP」。

  4. 4
    ④ Bot 评分与挑战

    综合浏览器指纹、行为轨迹、IP 信誉给出机器人评分,可疑但不确定的下发 JS 挑战而非直接拒绝,避免误伤。

  5. 5
    ⑤ 放行、挑战或拦截并留痕

    处理结果都写入日志,可在控制台按事件回放请求详情,用于排查误拦与复盘攻击。

04 谁在用它

保护遗留系统

那些没人敢改的老系统,用 WAF 在外面加一层防护,比动代码安全得多。

防撞库与暴力破解

登录、短信验证码接口加限速与挑战,把自动化的账号枚举脚本挡在门外。

拦截恶意爬虫

价格抓取、内容搬运等爬虫通过 Bot 管理识别并限流,把带宽留给真实用户。

拦截已知漏洞利用

突发 0day 漏洞(如某个通用组件的反序列化漏洞)时,先用 WAF 规则顶住,争取修复时间。

05 怎么用

托管规则库可一键开启(低误杀档起步);自定义规则需要了解一点表达式语法。

  1. 01域名接入并开启代理后,进入 Security → WAF,开启 Managed Rules,选择 OWASP 核心规则集。
  2. 02先用「仅记录(Log)」模式跑 1-3 天,查看会拦下哪些请求,确认真实业务没被误伤。
  3. 03确认无误后切换到「拦截(Block)」模式,并保留误拦截的快速放行入口。
  4. 04用表达式写自定义规则,例如按路径、方法、国家、UA 组合设条件。
  5. 05对登录、下单、发送验证码等敏感接口单独配置速率限制规则。
  6. 06开启 Bot Fight Mode 或企业版 Bot Management,对疑似机器人做挑战。
典型自定义规则(Cloudflare 表达式语法)text
# 只允许公司出口 IP 访问后台管理路径,其余一律拦截
(http.host eq "api.example.com" and starts_with(http.request.uri.path, "/admin/"))
and not ip.src in {203.0.113.0/24 198.51.100.7}

# 登录接口限速:同一 IP 1 分钟内超过 10 次就下发挑战
(http.request.uri.path eq "/api/login" and http.request.method eq "POST")
→ Rate limiting: 10 requests / 1 minute → Managed Challenge

避坑提示

  • !先记录后拦截,是避免 WAF 把正常用户挡在门外最有效的一条纪律。
  • !自定义规则的顺序决定优先级,宽泛的放行规则(Skip)会跳过后续所有检查,慎用。
  • !WAF 不能替代代码修复:它是外部过滤,输入校验与参数化查询仍必须做。

06 关键概念

SQL 注入
把恶意 SQL 片段塞进输入框,诱使数据库执行,从而窃取或篡改数据。
XSS
把恶意脚本注入网页,在其他用户浏览器里执行,常用于盗取登录态。
托管规则
厂商维护的攻击特征库,你只需开关和调等级,不用自己写规则。
误杀(False Positive)
正常用户的请求被误判为攻击而拦截,是 WAF 配置中最需要防范的问题。

07 容易混淆的对比

ModSecurity(自建)开源免费、完全可控,但规则维护与性能调优需要专人负责。
云厂商 WAF(阿里云/腾讯云)与自家 CDN、负载均衡集成好,国内合规场景常用。
图软件图鉴

纯静态站点,无后端、无追踪。内容为中文原创撰写,用于帮助非技术读者理解主流软件产品。

关于本站

全部内容在构建时生成
产品名称与商标归各自公司所有

© 2026 软件图鉴Nuxt 4 · Vue 3 · Tailwind 4 · 纯静态