kevin
f2a6203714
fix(security): 管理端输入校验/密码最小长度/明文认证限制,修复封禁计数丢失更新
安全审计 #23/#24/#25/#27(security_todo.md P3):
- #23 用户名/域名格式校验:用户名白名单 ^[a-zA-Z0-9._-]{1,64}$
(杜绝含 @ 用户名导致的 GetByEmail 解析歧义),域名按标签校验
(字母/数字/连字符、标签 ≤63、总长 ≤253,允许单标签内部域名);
CreateUser/UpdateUser/CreateDomain 接入,新增 renderUserFormError
共用错误渲染
- #24 密码最小长度 8 位:统一 minPasswordLength,接入自助修改、
管理员创建、管理员重置三处,新增中/英/日 i18n 文案
- #25 POP3/IMAP 明文认证限制:配置了 TLS 且来源非回环时必须先
STLS/STARTTLS 再认证;新增 store.IsLoopbackIP 与
[imap]/[pop3] allow_insecure_auth 配置项(默认 false 强制)。
顺带修复存量缺陷:POP3S 隐式 TLS 端口 tlsActive 恒为 false
(原仅 STLS 命令置位),连接中心注册的 TLS 标记同步修正。
部署注意:默认行为收紧,内网明文老客户端需改用 TLS 或显式
配置 allow_insecure_auth = true
- #27 IncrementFail 并发首建窗口丢失更新:冲突 INSERT 由
DoNothing 改为 fail_count 自增,TestIncrementFailConcurrent
在 -race -count=5 下从偶发失败变为稳定通过
- 新增 17 项单测(校验矩阵/handler 拒绝放行路径/settings 密码/
POP3 明文拒绝与放行/回环判定)
- security_todo.md 勾选 #23/#24/#25/#27;登记存量备注:4 个
cache=shared 测试在 -count>1 下非幂等(UNIQUE 冲突,与 CI
默认单轮跑法无关)
2026-08-28 15:09:55 +08:00
..
2026-08-28 15:09:55 +08:00
2026-08-20 00:21:10 -04:00
2026-08-20 01:37:42 +08:00
2026-08-20 00:21:10 -04:00
2026-08-19 16:56:23 +08:00
2026-08-20 00:21:10 -04:00
2026-08-20 00:21:10 -04:00
2026-08-20 01:25:40 +08:00
2026-08-20 01:46:43 +08:00
2026-08-20 01:37:42 +08:00
2026-08-20 00:21:10 -04:00
2026-08-19 16:31:25 +08:00