Skip to content

Releases: xbzbing/dsh-password-gate

dsh-password-gate 0.1.0

Choose a tag to compare

@xbzbing xbzbing released this 14 Aug 20:18

dsh-password-gate 0.1.0(安全修复版)

DeepSeek Harness Web 提供密码登录门禁的 Cordis 插件(host-only,零构建、零运行时依赖)。

本版为安全审查修复后的重新发布(原 0.1.0 已撤回)。

功能

  • 真实请求拦截:网关独占对外端口,每个 HTTP 请求与 WebSocket 升级先过认证检查——未认证 /api/* 返回 401、页面类路径 302 到登录页、WS 握手拒绝;内部 webserver 由 bundle patch 钉在回环端口,网关是唯一入口
  • 密码流程:首次打开设置密码 → 登录 → 修改密码(/login,已登录时直接显示改密表单)→ 登出
  • 密码策略:至少 8 位 +(大小写混合 或 特殊字符),服务端强制 + 前端即时反馈,全部可配置
  • 多层防爆破:per-IP 失败锁定(5 次/5 分钟)+ 全局速率限制(60 次/分钟,防多 IP 轮换);scrypt 在 libuv 线程池异步执行,登录洪峰不阻塞事件循环、不影响已登录用户
  • 爆破提醒:锁触发/限流耗尽时 ctx.logger.warn 告警 + ctx.emit('dsh-password-gate/brute-force', payload) 事件(JSON 安全负载,每锁定/窗口一次),符合 dsh 插件规范
  • 会话:scrypt 哈希存储、内存 256-bit token(30 天)、HttpOnly + SameSite=Strict cookie、改密吊销全部会话
  • 安全适配crypto.randomUUID polyfill(明文 LAN 访问兼容)、转发时 Host/Origin 改写为回环 + 请求目标规范化(绝对形式 URI → origin-form)
  • 运维dsh plugin --profile web add 一步安装(自带 dsh.bundle patch)、dsh-password-gate-uninstall / -reset 命令

安装

dsh plugin --profile web add dsh-password-gate   # 或 file: 本地路径
dsh web                                          # 打开 http://<host>:3080

验证

  • 48 个单元/契约测试(node:test),含安全契约回归:DNS-rebinding/跨站请求无会话 cookie 到不了上游、伪造 cookie 拒绝、绝对 URI 规范化、异步 scrypt、限流与锁定事件
  • 实机端到端 E2E(Playwright)
  • 详见 README 与 docs/PROPOSAL.md

已知限制(MVP)

本机用户可直连内部端口(本机可信模型);明文 HTTP(LAN 部署建议可信网络或前置 TLS);无分布式/换 IP 绕过全局限速的防护;内存会话重启即下线。