fix version 1
This commit is contained in:
@@ -169,3 +169,31 @@ flowchart TD
|
||||
8. **清理**:移除 `cmd/cli` 调试输出、空 `excode/ex.go`、未调用的限流函数(或真正接入);敏感信息勿进 `printer`。
|
||||
|
||||
> 本报告只列出与现有实现直接相关的修复项,不引入新的分层或抽象封装。
|
||||
|
||||
## 9. 整改记录
|
||||
|
||||
### 2026-09-22:密码哈希统一为 bcrypt(对应建议 2、3)
|
||||
|
||||
| 位置 | 改动 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| `internal/logic/forget/reset.go:32-43` | `utils.Md5(in.Password)` → `bcrypt.GenerateFromPassword(密码+新salt, bcrypt.DefaultCost)`,并在同一条 `Updates` 中同步写入新的 `salt` | 修复 P4:重置密码与登录校验(`bcrypt.CompareHashAndPassword(密码+sa.Salt)`)恢复一致;同时消除了"未加盐 MD5"与"重置后无法登录"两个问题 |
|
||||
| `internal/logic/register/do.go:30` | `bcrypt.MinCost` → `bcrypt.DefaultCost` | 修复 P5(cost 4 → 10) |
|
||||
| `internal/logic/account/set_password.go:35` | `bcrypt.MinCost` → `bcrypt.DefaultCost` | 修复 P5 |
|
||||
| `internal/models/query.go:21` | `bcrypt.MinCost` → `bcrypt.DefaultCost` | 修复 P5(`InitData` 仍未被调用) |
|
||||
|
||||
验证:`gofmt` 无差异;`GOWORK=off go build ./...` 与 `go vet ./internal/...` 均通过。
|
||||
|
||||
> 历史 MD5 密码记录无法用 bcrypt 校验,需通过"重置密码"流程迁移(本次改动后重置将写入 bcrypt)。
|
||||
|
||||
### 2026-09-22:验证码校验、找回密码票据与 Token 前缀(对应 P1、P2、P3、P6)
|
||||
|
||||
| 编号 | 级别 | 问题 | 处理结果 |
|
||||
| --- | --- | --- | --- |
|
||||
| S1(原 P1/P2) | 高 | 验证码登录/快捷登录/注册/找回四条路径均不校验验证码 | 已修复:新增模块内验证码校验函数(`internal/vars/cache.go` 定义 Redis 键前缀常量,与 sender 侧 `/SMS/Code/` + 手机号规则一致),按 Redis 读取比对,**校验成功后删除键(一次性)**;四条路径全部接入 |
|
||||
| S2(原 P3) | 高 | `Forget.Reset` 仅凭 `identity` 即可改任意账号密码 | 已修复:`Forget.Verify` 真实校验 `phone + code` 后写入一次性重置票据(Redis,带 TTL);`Forget.Reset` 先检查票据存在才允许改密,改密成功后立即删除票据(防重放)。未改 proto,用现有两步流程实现 |
|
||||
| H3(原 P6) | 高 | Token 缓存键前缀 `/TOKEN/` 与 `/token/` 不一致 | 已修复:统一引用 `internal/vars.TokenPrefix` 常量,签发与校验/登出的键完全一致 |
|
||||
|
||||
> 本轮未修改 `proto/*.proto` 与 `pb/*.go`。
|
||||
|
||||
**遗留(未处理)**:P7 KYC 空 stub、P8 验证码接口未接入、P9 日志泄露 PII、P10 事务与错误处理缺失、全模块无测试,以及报告中「中/低」级别的各项。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user