fix: 锁定计数表过期清理并限制总量
This commit is contained in:
@@ -1367,3 +1367,12 @@ issue #3 未关闭,`feat/fix-3-downlink-deadlock` 未合入 `main`。下面是
|
||||
- 原因:新库无码行或空码时 `constantTimeEqual("", "")` 为真,只开开关即可裸注册。
|
||||
- 备选方案:仅拦管理 PUT、不拦已处于「开启+空码」的旧库(否决,缺少纵深防御)。
|
||||
- 影响:原先「先开开关再设码」的两步会 400;须先设码或一次提交开启与码。
|
||||
|
||||
### 复审修复 U-04
|
||||
|
||||
1. **锁定计数表过期清理与总量上限**
|
||||
- 原条款:DEVELOPMENT 第 5 节锁定计数;issue #42。
|
||||
- 实际做法:`internal/auth/locks.go` 的 Fail/Check 顺手删除已过期且最近失败在窗口外的条目;每 1024 次或每分钟全表扫描;默认上限 65536,超出时优先淘汰最旧的非锁定条目。生产接线使用 `auth.NewLoginLocks()`。
|
||||
- 原因:注册安全码错误与错误 API 令牌按 IP 建条目,轮换地址会使 map 只增不减。
|
||||
- 备选方案:一并改 `internal/admin/memlock.go`(否决,本波只改 locks.go;admin 测试用内存锁若仍独立注入需后续对齐)。未改对话密码锁键(U-03)。
|
||||
- 影响:过期未锁定条目会被回收;极端并发失败时最早的非锁定计数可能被挤出。
|
||||
|
||||
Reference in New Issue
Block a user