# Web安全不是加一道墙：扫描、WAF、抗DDoS怎么串成体系

- 发布日期: 2024-01-27 · 分类: Technology

做 Web 安全这几年，我最大的感受是：单靠一层防护根本兜不住。代码里没扫干净、线上没上 WAF、CDN 流量没盯紧，任何一环松了都能被钻空子。今天把我在实际项目里反复验证过的几件事摊开来讲——静态扫描、动态扫描、WAF，以及 DDoS 和 MJJ 攻击怎么防。

## 静态扫描：在代码还没跑起来之前把雷排掉

静态扫描（静态代码分析）这件事，我的判断是它必须卡在开发阶段，不能等上线再补。我踩过一次坑：一个内部服务上线后才跑了一遍扫描，结果 SQL 注入和跨站脚本攻击的漏洞全写在业务逻辑里，修起来比当初多花了一周。

静态扫描的优势就在于"早"。程序还没运行，它就能把源代码翻个底朝天，把那些典型漏洞——SQL 注入、XSS 之类的——在 CI 流水线里直接拦下来。成本最低，收益最高。

## 动态扫描：运行时才能看到的问题

但光有静态扫描不够。我实测下来，有些漏洞只有在应用真正跑起来之后才暴露：配置写错了、身份验证逻辑在特定请求序列下会绕过，这些静态分析根本看不到。

动态扫描（DAST）干的就是这个活——在应用运行时模拟攻击者的行为去打它。我一般把 DAST 放在 staging 环境跑，专门抓那些"代码看着没问题、一跑就出事"的情况。两种扫描配合用，覆盖面才完整。

## WAF：我把它当成最后一道门

WAF（Web 应用程序防火墙）在我的架构里不是"锦上添花"，是必须项。它监控所有经过的 HTTP/HTTPS 流量，识别并过滤恶意请求。SQL 注入、XSS 这些攻击，到了 WAF 这一层基本就被拦掉了。

另外有个容易被忽略的点：不少行业合规要求（比如 PCI DSS）本身就要求部署 WAF。我见过客户因为没上 WAF，审计直接不过关，后面补部署反而更被动。所以我的建议是：别等出事，也别等审计，一开始就把它架好。

## DDoS 和 MJJ：两种完全不同的打法

DDoS 我不用多解释，海量流量把服务打瘫，目标就是让你不可用。应对上我一般做三件事：流量监控做实时告警、网络层做多层防护、基础设施保持弹性（能扛住突发峰值）。如果预算允许，接一个专业的 DDoS 防御服务（Cloudflare 这类）会省很多事，我实际体验下来响应速度和清洗能力确实比自己硬扛强。

MJJ 攻击是另一种路数——它不追求打瘫你，而是刷 CDN 流量，让你账单爆炸。这个我吃过一次亏，当时 CDN 流量突然飙到正常值的几十倍，查了半天才发现是有人在批量请求静态资源。后来我做了几个调整：限制带宽使用、定期跑 CDN 流量监控、优化内容交付策略（比如加缓存、限制热点资源的回源频率）。同时跟 CDN 提供商保持紧密沟通，真遇到恶意刷量，该走法律手段就走法律手段。

## 最后说一句

预防永远比事后补救便宜。静态扫描管代码、动态扫描管运行时、WAF 管入口流量、DDoS 和 MJJ 的监控管基础设施——四层叠在一起，才算真正给 Web 服务兜住了底。别指望某一层能兜住所有，也没有哪一层能省。

