Skip to content

Latest commit

 

History

History
59 lines (44 loc) · 2.97 KB

CHANGELOG.md

File metadata and controls

59 lines (44 loc) · 2.97 KB

变更日志 — 密码管理器(pmvault)

本文件记录本项目的变更。

格式参考 Keep a Changelog, 版本号遵循 语义化版本。

[未发布]

[1.0.1] - 2026-11-06

新增

  • 引入版本权威源 VERSION(仓库根,单行 MAJOR.MINOR.PATCH):
  • 两个程序新增 --version:vaultd --version / vaultgui --version
  • 启动日志打印版本号,便于从日志回溯运行的是哪个版本
  • 17 项单元测试,覆盖会话并发、闲置上锁、错误码收敛、限流窗口、

变更

  • 统一错误出口:原先有 30 处直接把 err.Error() 写进 HTTP 响应,
  • 会话并发安全:session 字段访问改由互斥锁保护,消除数据竞争
  • 滑动窗口闲置上锁:每次成功的解锁态操作刷新闲置计时,取代原先
  • 时间存储统一 UTC:账户锁定时间改用 RFC3339 格式存取,
  • 备份轮转失败留痕:删除旧备份出错时写日志,不再静默吞错

修复

  • 列表接口回显的 limit 与实际生效值一致
  • 创建分类时校验 parent_id 的存在性与归属
  • 审计写入失败不再被静默丢弃:改为降级并返回稳定错误码(E_AUDIT_UNAVAILABLE),响应带 audit_degraded 标记与 X-Audit-Degraded 头
  • phase-a/脚本-打包.py 的 SRC 路径错指:原 SRC = os.path.dirname(_HERE)
  • phase-a/脚本-打包.py 的失效 ldflag:原
  • phase-edgeapp/脚本-打包.py 缺构建步骤:原先只打包、要求 exe 已预构建,
  • 前端时间显示偏差:fmtTime 原先把后端返回的本地时间一律当 UTC 解析,
  • 登录限流绕过:限流改用真实 r.RemoteAddr,不再采信可伪造的

安全

  • 原型工具不再把派生主密钥打印到 stdout:改为只输出 sha256 前 8 位指纹

[1.0.0] - 2026-10-22

新增

  • 首个发布版本:Windows 本地单机密码保险箱
  • 加密:AES-256-GCM 认证加密(防篡改),密文格式 版本号(1) ‖ IV(12) ‖ Tag(16) ‖ 密文
  • 密钥派生:Argon2id(内存 64 MiB / 迭代 2 / 并行 1),抗 GPU / ASIC 暴力破解
  • 主密钥不落盘:库里只存派生参数(salt + KDF 参数),每次解锁时重新派生
  • 仅监听 127.0.0.1 随机端口:不对外开放,局域网内其他设备无法访问
  • 闲置 15 分钟自动上锁(滑动窗口:每次成功操作续期)
  • 独立浏览器配置:不影响日常浏览器的书签、密码、历史
  • 备份轮转:自动 / 手动备份,保留最近 30 份
  • 双形态发布:原生窗口版(Edge / Chrome --app 模式承载)与浏览器版
  • 数据格式与早期 PHP 版完全兼容,可双向读写

安全

  • 账户锁定:连续 5 次失败锁定 15 分钟(锁定时间以 UTC 存储)
  • 登录限流:按来源 IP 10 次/分,按用户名 5 次/5 分(用户名归一化为小写)