STTNet
 全部  命名空间 文件 函数 变量 类型定义 枚举 枚举值 宏定义 
| 枚举
stt::security 命名空间参考

涉及信息安全的api 更多...

struct  RateState
 单一限流器的运行状态(可复用于多种限流策略)。 更多...
 
struct  ConnectionState
 单个连接(fd)的安全与限流状态。 更多...
 
struct  IPInformation
 单个 IP 的安全状态与连接集合。 更多...
 
class  ConnectionLimiter
 统一的连接与请求安全裁决器(IP 级 + fd 级,多策略限流 + 黑名单)。 更多...
 

枚举

enum  RateLimitType { RateLimitType::Cooldown, RateLimitType::FixedWindow, RateLimitType::SlidingWindow, RateLimitType::TokenBucket }
 限流算法类型(策略)。 更多...
 
enum  DefenseDecision : int { ALLOW = 0, DROP = 1, CLOSE = 2 }
 安全裁决结果(由 ConnectionLimiter 返回)。 更多...
 

详细描述

涉及信息安全的api

枚举类型说明

安全裁决结果(由 ConnectionLimiter 返回)。

所有连接 / 请求在进入业务处理前,都会经过 ConnectionLimiter 的判定, 并返回以下三种裁决之一:

  • ALLOW (0):
    • 正常通过,继续处理
  • DROP (1):
    • 无视该请求(不回应、不处理)
    • 主要用于 request 阶段的轻度防御
  • CLOSE (2):
    • 立即断开连接
    • 可伴随 IP 风险升级或临时封禁
注解
  • connect 阶段通常只使用 ALLOW / CLOSE
  • DROP 主要用于 request 阶段(fd 已存在时)
枚举值
ALLOW 
DROP 
CLOSE 

限流算法类型(策略)。

每种策略的“语义”不同,选择时请按业务/攻击模型匹配:

1) Cooldown(连续触发惩罚 / 冷却限流)
  • 规则:在 secs 时间内累计达到 times 次后,后续请求全部拒绝,直到“安静”满 secs 后才恢复。
  • 特性:对持续刷/爆破非常狠;对正常用户的“短时间突发”不友好(可能需要完全停一段时间才能恢复)。
  • 适用:
    • 建连防爆破(connect)
    • 登录失败次数惩罚(fail-based 可用同思路扩展)
    • 防脚本快速重试
  • 不适用:
    • 正常会出现突发但希望“自然恢复”的接口(例如页面加载产生的突发 HTTP 请求)
2) FixedWindow(固定窗口计数)
  • 规则:以某个窗口起点为基准,每 secs 秒为一个窗口;窗口内最多 times 次,超出拒绝;窗口结束时计数清零。
  • 特性:实现简单、开销小;存在“窗口边界突刺”(在窗口交界处可能短时间放行较多)。
  • 适用:
    • 低风险、要求简单的限流
    • 统计口径清晰的“每 N 秒最多 M 次”
  • 不适用:
    • 对抗性强的场景(容易被边界行为利用)
3) SlidingWindow(滑动窗口 / 时间戳队列)
  • 规则:在任意时刻 now,统计 (now-secs, now] 区间内发生的次数;若 >= times 则拒绝。
  • 特性:比 FixedWindow 更公平、无窗口边界突刺;需要维护时间戳队列(开销略高)。
  • 适用:
    • 对外 HTTP API、用户操作等希望公平且稳定的限流
    • path 级别的关键接口(如 /login /register)
  • 不适用:
    • 极高 QPS 且每个 key(times) 很大、又不愿意付出队列内存/维护成本的场景(可用近似桶)
4) TokenBucket(令牌桶)
  • 规则(常见语义):令牌按固定速率补充;每次请求消耗 1 令牌;无令牌则拒绝。 在本类接口里通过 (times, secs) 表达:平均速率约为 times/secs,桶容量通常与 times 同级(实现可按需要定义)。
  • 特性:允许突发(桶里有存量时可瞬间放行一批),同时限制长期平均速率;工程上最常用。
  • 适用:
    • 请求流量整形(允许短突发但控制长期平均)
    • IM 消息、HTTP 请求等“既不想太硬也不想太松”的场景
  • 不适用:
    • 你想要“打满后必须停一段时间”的强惩罚需求(那是 Cooldown)
枚举值
Cooldown 
FixedWindow 
SlidingWindow 
TokenBucket