Releases: slywalker2006/dsh-passwords
Releases · slywalker2006/dsh-passwords
Release list
v2.1.0
新增:dsh 设置页里的「密码门」卡片
- 设置 → 插件 页出现 dsh-passwords 卡片(可折叠,样式与官方插件卡一致,深浅主题跟随)
- 远程设置状态 + 一键「重载补丁」(dsh 升级后设置页异常可一键修复,不用 SSH)
- 修改密码 / 修改用户名(主用户可改任何人,改密后旧会话立即失效)
- 子用户管理:主用户直接在网页里创建 / 删除子用户
多用户体系
- 首次配置的账号自动成为主用户,之后添加的为子用户
- 子用户可登录使用 dsh,但无用户管理权限
远程访问优化
- dsh 默认只允许本机浏览器编辑设置;本版本自动处理,远程浏览器可正常使用全部设置功能
- 网关每次启动自动维护,dsh 升级后无需手动操作
修复
- 全新部署时首个账号被建为子用户的角色错误
- README 重构,聚焦远程连接与多用户
dsh-passwords v2.0.4
v2.0.4 修复:Loading plugins 卡顿
原因
- dsh 对插件脚本返回
cache-control: no-cache,静态资源干脆没有缓存头 - 浏览器每次进页面都要把 ~30 个插件文件全部重新下载一遍,经过慢链路就是每次几十个来回 → 长时间卡在 "Loading plugins…"
修复
- 网关代理层对两类请求强制
Cache-Control: public, max-age=31536000, immutable:/assets/*(文件名即内容哈希)/plugins/*且带?rev=(rev 是 dsh 的内容哈希,更新自动换新地址)
- 不影响 HTML / API / 无 rev 的插件请求(保持原样)
效果
- 升级后第一次访问仍会完整下载一次,之后每次刷新秒进(插件全部命中浏览器缓存)
- 如升级后仍慢:强刷一次浏览器(Ctrl+Shift+R)
许可证
BSD 3-Clause
安装
Node.js >= 22.5。克隆仓库 → cp .env.example .env(改 SETUP_KEY)→ npm install && npm run build && npm start。完整教程见 README。
dsh-passwords v2.0.3
v2.0.3 性能优化 + 文档
性能
- 会话缓存(30s TTL):同一 token 的 JWT 验签 + 用户查询只做一次,后续请求只剩 Map 查找
- 上游连接池(keep-alive Agent):代理请求复用与 dsh 的 TCP 连接,不再每次新建握手
- SQL 预处理语句缓存:避免逐请求重复编译
- 实测:服务器本机网关单请求开销 ~1-2ms(复用连接 0.5-1ms),与直连 dsh 几乎无差
重要提示:HTTPS 证书请用 EC 而不是 RSA
- RSA-2048 握手签名在弱 CPU 云服务器上实测要 1.1 秒!换成 EC(prime256v1)证书后服务端握手仅 ~6ms
- 换证命令见 README 第 7 步
文档
- 新增「dsh 怎么启动(重要)」:说明 DEEPSEEK_API_KEY 必填、
--patch cordis.yml对远程"添加工作区"的必要性(不加会导致远程打不开文件夹选择器) - FAQ 新增「访问有点慢?」排查步骤
许可证
BSD 3-Clause
安装
Node.js >= 22.5。克隆仓库 → cp .env.example .env(改 SETUP_KEY)→ npm install && npm run build && npm start。完整教程见 README。
dsh-passwords v2.0.2
v2.0.2 安全修复(网安测试第二轮)
1. CSRF 防护
- 登录/配置表单新增 double-submit token:GET 渲染时同时下发 HttpOnly Cookie 与表单隐藏域,POST 时恒定时间比对
- 无 token / token 不匹配 → 403 并重新下发新 token;多标签页互不干扰
2. 真实状态码
- 凭据错误 → 401、账号锁定 → 429、已初始化 → 409(不再统一 200 吞错)
3. 代理层防嵌框
- dsh 应用代理响应补
X-Frame-Options: SAMEORIGIN+Content-Security-Policy: frame-ancestors 'self'(允许同源内嵌,禁止跨站嵌框)
复验(公网实测)
- 无 CSRF 登录 → 403 ✓
- 错密码 → 401 ✓;正确登录 → 302 ✓
- 连续失败第 5 次起 → 429 ✓
- dsh 页面响应含嵌框头 ✓
- 时序均衡:不存在用户 0.896s vs 存在用户错密码 0.898s ✓
许可证
BSD 3-Clause
安装
Node.js >= 22.5。克隆仓库 → cp .env.example .env(改 SETUP_KEY)→ npm install && npm run build && npm start。完整教程见 README。
dsh-passwords v2.0.1
v2.0.1 更新
许可证变更
- 由专有闭源改为 BSD 3-Clause——自由使用、修改、分发,保留版权声明即可。
文档
- README 新增界面截图:登录页(浅色/深色)、首次配置页、dsh 主界面、安全测试实测输出、核心源码
- 截图均为真实运行环境抓取(公网部署实例 + 真实测试结果)
打包
- 附件 tgz 已包含 BSD-3-Clause LICENSE
历史(v2.0.0)
- 登录网关:首次配置 / bcrypt / 防爆破 / 审计日志
- 用户数据静态加密(AES-256-GCM + HMAC)
- HTTPS:TLS 1.2+、Secure Cookie、HSTS、80 跳转
- 网安测试 5 项漏洞修复(路径穿越 / 时序枚举 / 畸形 Cookie / 开放重定向 / Host 反射)
安装
Node.js >= 22.5。克隆仓库 → cp .env.example .env(改 SETUP_KEY)→ npm install && npm run build && npm start。完整教程见 README。
dsh-passwords v2.0.0
dsh-passwords v2.0.0 首发
DeepSeek Harness 的登录网关(密码门):未登录一律拦在登录页,登录后代理进 dsh。
功能
- 登录页 + 首次配置(SETUP_KEY 安装密钥,单次初始化)
- 密码 bcrypt 哈希,5 次失败锁 15 分钟防爆破
- 用户数据静态加密:用户名/IP/审计记录 AES-256-GCM 密文落盘,登录尝试表仅存 HMAC 散列
- 审计日志(node dist/index.js audit 查看,自动解密)
- HTTPS:TLS 1.2+、Secure Cookie、HSTS、80 端口 301 跳转
- 登录页主题跟随 dsh(浅色/深色/系统)
- 登录页安全头:严格 CSP、防点击劫持、禁缓存
安全修复(网安测试后)
- 路径穿越绕过鉴权(/gateway/../api/*)→ 路径规范化后鉴权
- 时序用户名枚举 → 不存在用户也空跑 bcrypt
- 畸形 Cookie 百分号编码导致 500 → 解码容错
- next 参数开放重定向(/\evil.com、/%2F%2Fevil.com)→ 白名单校验
- 80 端口 Host 头反射 → MCP_GATEWAY_PUBLIC_HOST 固定跳转目标
安装
Node.js >= 22.5。克隆仓库 → cp .env.example .env(改 SETUP_KEY)→ npm install && npm run build && npm start。完整教程见 README。
许可证
⚠ 本版本发布时为专有许可;许可证已在 v2.0.1 更新为 BSD 3-Clause,请以最新版本为准。