前言¶
DeepSeek Harness(DSH)支持基于插件的 Web 部署。默认情况下,Web 服务器的入口可能缺乏主机端的安全策略。如果服务暴露在公网,未受保护的 API、SSE 和 WebSocket 接口可能面临直接访问的风险。在 WebServer 层面增加一个统一的认证策略,是提升 Web 部署安全性的基础步骤。
插件介绍¶
dsh-auth-lock 是一个 DSH Host 端插件,由开发者 imchenmin 维护。它的核心功能是在 DSH Web 部署中提供密码认证能力,覆盖 DSH API、SSE、WebSocket 以及第三方插件注册的所有服务器路由。
核心功能¶
该插件主要包含以下安全与会话管理能力:
-
安全存储与验证
使用 Node.js 的scrypt算法进行密码派生,参数为 N=32768, r=8, p=1,配合 128 位随机盐。密码验证采用恒定时间比较,确保防时序攻击。密码明文永远不会被存储。 -
会话管理
生成 256 位随机会话令牌,Host 内存中仅保留对应的 SHA-256 密钥。使用 HttpOnly、SameSite=Strict 的 Cookie,并在 TLS 连接下自动启用 Secure 标志。会话默认拥有 10 分钟空闲超时(可配置 1 至 1440 分钟)和 24 小时的绝对生命周期。 -
访问控制
默认仅允许本地回环地址进行首次设置,防止新实例被远程接管。对远程地址实施 15 分钟窗口内 8 次密码失败尝试的限制。同时进行同源 Origin 检查并限制 16 KiB 的请求体大小。 -
通用性
不依赖移动、远程控制或配对等其他业务插件,仅依赖 DSH WebServer 的webserver/request和webserver/upgrade水流。认证策略作用于 WebServer 层,自动应用于所有注册的路由。
安装与启用¶
插件对 Node.js 版本有要求:^22.19.0 || >=24.0.0。
安装命令如下:
dsh plugin --profile web add github:imchenmin/dsh-auth-lock
安装后,检查 DSH 配置(--dump-config),确认 cordis.patch.yml 中包含 id: auth-lock。如果页面报告 DSH 版本不兼容,插件将保持非活动状态,建议卸载。
典型用法¶
-
首次设置
在运行 DSH 的本地浏览器访问http://127.0.0.1:<port>,系统会引导创建一个 4-16 字符的密码或数字 PIN。 -
登录与访问
后续访问时,输入密码即可通过认证。登录成功后页面会自动刷新或返回原页面,以便 API、SSE 和 WebSocket 客户端重新建立连接。 -
修改密码
进入 DSH 设置面板,找到“Access Lock”部分。依次输入当前密码、新密码、确认新密码,保存后系统会撤销旧会话并生成新的认证密钥。 -
重置密码
如果忘记密码,需在运行 DSH 的主机上重置。停止dsh web后执行:
dsh plugin --profile web exec dsh-auth-lock-reset -- --yes
重启 DSH 后,系统将恢复首次设置状态。
注意事项¶
-
DSH 版本兼容性
该插件依赖 DSH 的特定 WebServer 水流。在旧版本的 DSH 构建上,插件会保持非活动状态,且页面日志会明确提示并推荐卸载。 -
不可逆性
密码验证器是不可逆的,因此无法恢复原始密码。一旦遗忘,必须通过上述命令重置。 -
环境依赖
插件运行于 DSH 进程的 Host 权限下。安装前建议检查源码与许可证。 -
生态变动
DeepSeek Harness 正处于快速演变中,可能会引入破坏扩展点兼容性的变更。长期部署建议锁定 Git Commit 或使用明确发布的版本。
总结¶
dsh-auth-lock 为 DSH Web 部署提供了一个轻量级但标准化的认证层。它通过密码、会话管理和严格的访问控制,填补了 Host 端的安全空白,适合需要提升 Web 服务安全性的场景。
- 插件目录:https://www.skillhub.cn/plugins/imchenmin/dsh-auth-lock
- 源码地址:https://github.com/imchenmin/dsh-auth-lock