← 返回目录

第 4 卷

第 4 / 4 卷日期:

18初始: canary

19observe(拦,true) → stage=canary hits=1误伤=0放过=0
20observe(拦,true) → stage=canary hits=2误伤=0放过=0
21observe(拦,true) → stage=active hits=3误伤=0放过=0

22 23=== 闭环:老化(长期无命中)===

24tick(无命中)→ stage=canary hits=0误伤=0放过=0
25tick(无命中)→ stage=canary hits=0误伤=0放过=0
26tick(无命中)→ stage=aged_out hits=0误伤=0放过=0

27 28=== 闭环:自动回退(过宽候选灰度期误伤超阈值)===

29误拦正常请求后: stage=rolled_back hits=1 误伤=1 放过=0 30

31=== 漏拦 → 喂回证据库 ===

32窄候选(只拦/admin)回放后: stage=canary hits=2误伤=0放过=7
33漏拦7条→脱敏后喂回证据库7条
34证据库: 9条→ 16条
35user:异常证据[path-probe] method=GET path=/wp-admin status=403 uaClass=browse
36user:异常证据[path-probe] method=GET path=/etc/passwd status=404 uaClass=brow
37再喂一次: 0条(drain后不再重复)

38

39===喂回→下一轮提案(漏掉的异常请求变成候选)===
40下一轮提案输入16条证据(原9条+喂回7条);token in=687 out=266
41cand-8 [block admin probe]覆盖率=22.2%精确率=100.0%误伤率=0.0%
42cand-9 [block wp admin probe]覆盖率=11.1%精确率=100.0%误伤率=0.0%
43...(cand-a ~ cand-e是/wp-login、/phpmyadmin、/etc/passwd、sqli、ua候选,与上一轮

本讲小结

这一讲收尾,实战篇也就此收口:候选规则长出来之后,怎么评测它拦得准不准、上线后怎么靠闭环持续进化?三步走:

  1. 评测:三种测试一步步逼近真实拦截。模拟测试回放历史流量,看覆盖率 / 精确率 / 误伤

率;阴影测试不影响真实环境;灰度测试小范围真实拦截。后两者共用同一套误伤率度量,沿 shadow → 灰度 → active 逐步推进。拦得好 = 覆盖率高且误伤率低,误伤超阈值回

退、长期无命中老化是两条退路。

  1. 闭环:漏掉的异常请求脱敏后喂回证据库,和原有证据合并后进入下一轮提案,长成覆盖漏

这背后真正的变化是,规则能被系统化地自动评测了:“拦得好不好”不再靠人的直觉,而是锚在可复现、可对比的计数上。

规则被纳入了完整的自进化闭环:误伤自动回退,漏拦喂回证据库并进入下一轮提案,规则从 “一次写死”变成持续进化的活系统。

注:本讲 GitHub 链接

思考题

动手实操:示例在 src/firewall/ch21/,直接改代码、重跑验证。

把 confirm.ts 的 checkRisk 阈值(0.02)调高,重跑,看 trap-1 会不会从“不通过”

变成“通过”。注意:trap-1 的误伤率是 100%,阈值要调到 ≥1.0 才会翻转;只改 confirm.ts 里 checkRisk 那一处 0.02,别动 demo/rule-eval-demo.ts 里的

fpThreshold。

欢迎把你的运行结果分享出来。如果你觉得这节课对你有帮助,也欢迎分享给其他朋友,我们下节课再见!

© 版权归极客邦科技所有,未经许可不得传播售卖。页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。

全站分卷索引 · 4 卷
  1. 1第 1 卷
  2. 2第 2 卷
  3. 3第 3 卷
  4. 4第 4 卷