CC 攻击怎么防御?和 DDoS 的区别在哪
这两个词经常被混着说,但它们是两种完全不同的攻击。搞清楚区别,才知道该用哪种防护。
一句话区分
DDoS 打的是带宽和连接,CC 打的是业务逻辑。
- DDoS:用海量垃圾流量把带宽堵死,你的服务器连包都收不进来
- CC:流量看起来完全正常,但请求的都是最耗资源的接口,把 CPU 和数据库拖垮
打个比方:DDoS 是堵住店门不让客人进,CC 是进来一万个人点最贵的菜然后不吃。
六个维度对比
| 维度 | DDoS | CC |
|---|---|---|
| 攻击层级 | 网络层 / 传输层 | 应用层(HTTP、游戏协议) |
| 流量特征 | 入向流量暴涨,曲线突变 | 流量正常,监控看不出异常 |
| 资源消耗 | 带宽、连接数 | CPU、内存、数据库连接 |
| 攻击成本 | 高(要买流量) | 低(一台机器就能发起) |
| 识别难度 | 低(看流量曲线即可) | 高(请求和正常用户几乎一样) |
| 防护方式 | 流量清洗、带宽扩容 | 会话校验、行为分析、人机识别 |
为什么 CC 更难防
DDoS 再猛,特征很明显——流量一拉起来就知道被打。CC 不一样,它伪装成正常用户:
- 请求头完整,User-Agent 正常
- 来源 IP 分散(代理池),单 IP 频率很低
- 请求的接口是真实存在的,参数也是合法的
所以基于「频率限制」的防护基本无效——每个 IP 只发一点点,加起来就是洪水。
CC 的常见打法
- 打登录接口。登录要查数据库、要算密码哈希,最耗资源。持续请求登录接口,数据库连接池很快耗尽。
- 打搜索/列表接口。这类接口通常带模糊查询,SQL 执行慢,几个并发就能拖垮数据库。
- 打游戏大厅。刷新房间列表、排行榜这类接口,玩家本来就会频繁调用,混在正常请求里很难识别。
- 慢速攻击。用极慢的速度发请求(比如一个字节一个字节地发),占着连接不放。这是 CC 的变种,叫 Slowloris。
怎么判断自己是被 CC 还是 DDoS
按这个顺序查:
- 看入向流量曲线。突然拉起一条直线 → DDoS。曲线平缓但 CPU 爆 → 大概率 CC。
- 看连接数。连接数暴涨但流量不大 → SYN Flood 或 CC。
- 看应用日志。某个接口的 QPS 异常高,且来源 IP 分散 → CC。
- 看数据库。数据库连接数打满、慢查询激增 → CC 打到数据库了。
有个快速判断法:把公网流量全断掉,如果服务器 CPU 立刻降下来,说明是 DDoS(流量进不来就好了);如果 CPU 还在高位,说明有本地进程在跑,可能是 CC 打进来的请求还在队列里,或者程序本身有问题。
CC 怎么防
核心思路不是「限制频率」,而是「验证这是不是真人/真客户端」。
1. 会话层校验
要求请求携带有效的会话令牌,且令牌必须是服务端签发的。纯 CC 工具拿不到有效令牌,直接被过滤。
游戏场景更简单——客户端 SDK 建立隧道时会做握手验证,攻击者没有合法客户端就建不了隧道。
2. 行为特征分析
看请求的「像不像人」:
- 请求间隔是否过于规律(人不会精确到毫秒)
- 是否只请求单一接口(正常用户会浏览多个页面)
- 是否携带完整的浏览器/客户端指纹
- 鼠标轨迹、点击位置(Web 场景)
3. 分层限速
不是简单的一刀切,而是按接口的重要性分级:
| 接口类型 | 策略 |
|---|---|
| 静态资源 | 宽松,走 CDN 缓存 |
| 普通查询 | 单 IP 每分钟 60 次 |
| 登录/注册 | 严格,单 IP 每分钟 5 次 + 验证码 |
| 支付/提现 | 最严,需二次验证 |
4. 降级预案
被打的时候,非核心功能要能主动关掉。比如:
- 关掉排行榜、公告这类非必要接口
- 登录加验证码(哪怕影响体验)
- 限流阈值临时调低
保住核心玩法,比什么都保不住强。
为什么通用高防挡不住 CC
大多数高防产品的 CC 防护只有两层:
- 单 IP 频率限制
- JS 挑战(让浏览器执行一段 JS 验证)
第一层被代理池绕过(每个 IP 只发一点点),第二层对游戏客户端完全无效(游戏不走浏览器)。
所以做游戏的话,CC 防护要看方案有没有客户端级的身份校验,而不只是流量层的规则。
小结
| 你的情况 | 该防什么 |
|---|---|
| 流量曲线突然拉满 | DDoS,找流量清洗 |
| CPU 爆但流量正常 | CC,找会话校验方案 |
| 两个都有 | 需要完整防护体系,不是单一产品 |
想了解游戏场景的完整防护架构,可以看 DDoS 防护原理 这篇。