Skip to content

Releases: slywalker2006/dsh-passwords

v2.1.0

Choose a tag to compare

@slywalker2006 slywalker2006 released this 14 Aug 15:22

新增:dsh 设置页里的「密码门」卡片

  • 设置 → 插件 页出现 dsh-passwords 卡片(可折叠,样式与官方插件卡一致,深浅主题跟随)
  • 远程设置状态 + 一键「重载补丁」(dsh 升级后设置页异常可一键修复,不用 SSH)
  • 修改密码 / 修改用户名(主用户可改任何人,改密后旧会话立即失效)
  • 子用户管理:主用户直接在网页里创建 / 删除子用户

多用户体系

  • 首次配置的账号自动成为主用户,之后添加的为子用户
  • 子用户可登录使用 dsh,但无用户管理权限

远程访问优化

  • dsh 默认只允许本机浏览器编辑设置;本版本自动处理,远程浏览器可正常使用全部设置功能
  • 网关每次启动自动维护,dsh 升级后无需手动操作

修复

  • 全新部署时首个账号被建为子用户的角色错误
  • README 重构,聚焦远程连接与多用户

dsh-passwords v2.0.4

Choose a tag to compare

@slywalker2006 slywalker2006 released this 14 Aug 07:33

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

Choose a tag to compare

@slywalker2006 slywalker2006 released this 14 Aug 07:25

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

Choose a tag to compare

@slywalker2006 slywalker2006 released this 14 Aug 07:13

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

Choose a tag to compare

@slywalker2006 slywalker2006 released this 14 Aug 07:03

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

Choose a tag to compare

@slywalker2006 slywalker2006 released this 14 Aug 06:36

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,请以最新版本为准。