From edde07540609bcccb2140d5e9112815d678cf44e Mon Sep 17 00:00:00 2001 From: tamakyi Date: Fri, 23 Oct 2026 11:14:27 +0800 Subject: [PATCH] update workbuddy file --- .workbuddy/memory/2026-10-23.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.workbuddy/memory/2026-10-23.md b/.workbuddy/memory/2026-10-23.md index b69ec7a..86cc83f 100644 --- a/.workbuddy/memory/2026-10-23.md +++ b/.workbuddy/memory/2026-10-23.md @@ -83,3 +83,18 @@ IPv6 丢掉了精确地址(IPv4 无损);邮件里也只给键,运维会 **变异验证的坑**:把 `shared.LimitKey(r.IP)` 改成 `r.IP` 会因 `shared` 未使用而 **编译失败**(不是断言失败);变异要保证仍能编译(改成 `LimitKey(r.IP) + r.IP` 才测到逻辑)。 + +### 测试环境验收(部署 29ddee0 后) + +伪造 `CF-Connecting-IP: 2001:db8:…`(RFC 文档保留段,封了不影响任何人)直连源站端口: + +- 基线 200 → POST 凭据 200(假页面)→ **同 /64 换地址 403**(聚合封禁生效); +- 凭据文件 `ip` = `2001:db8:dead:beef::1234`(精确,无 /64 后缀),`banned:true`; +- 换另一个 /64(`2001:db8:cafe::1`)→ 200,说明封的是 /64 不是全局; +- `od -c` 复核 `"path":"/wp-login.php"` **无前导空格** → cleanPath 生效。 + +**教训**:上一次那条 `" /wp-login.php"` 是**那次请求的 URI 本身带空格**(本地实测 +`Match(" /wp-login.php")=true` 靠 TrimSpace 命中、`Match("/ wp-login.php")=false`), +不是代码问题;判断这类"看不见的字符"一律用 `od -c`,别靠终端渲染。 +测试环境服务是**前台跑在 /dev/pts/1**,日志不在文件里 —— 拿日志要 `tmux capture-pane` 或 +下次启动加 `>> logs/tamabox.log 2>&1`。