dsh-mcloud 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -2
- package/README.md +34 -13
- package/lib/index.js +2505 -2482
- package/lib/request-guard.js +154 -0
- package/package.json +5 -2
package/CHANGELOG.md
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
|
|
7
7
|
| 插件版本 | 支持的 DeepSeek Harness | 支持的 Node |
|
|
8
8
|
| --- | --- | --- |
|
|
9
|
-
| **0.3.x** | **>= 0.2.1-rc.5,< 0.3.0** | >= 22 |
|
|
10
|
-
| 0.2.x | >= 0.2.1-rc.5,< 0.3.0 | >= 22 |
|
|
9
|
+
| **0.3.x** | **>= 0.2.1-rc.5,< 0.3.0** | >= 22 |
|
|
10
|
+
| 0.2.x | >= 0.2.1-rc.5,< 0.3.0 | >= 22 |
|
|
11
11
|
| 0.1.x | >= 0.2.1-rc.5,< 0.3.0 | >= 22 |
|
|
12
12
|
|
|
13
13
|
> 插件用到了 `tools/pre-execute`(写入审批闸)和 `webServer.register`(HTTP 路由)
|
|
@@ -17,6 +17,30 @@
|
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
|
20
|
+
## 0.3.1
|
|
21
|
+
|
|
22
|
+
**安全修复:`/api/dsh-mcloud/*` 现在有 Host / Origin 准入。**
|
|
23
|
+
|
|
24
|
+
DSH 的 `webServer.register` 只按路径分发,**不做**准入。插件原来只查了「连接是不是来自
|
|
25
|
+
环回地址」,而你自己浏览器里开着的任意网页发出的请求,`remoteAddress` 一样是 `127.0.0.1`。
|
|
26
|
+
于是任意网页都能读 `/list`、`/search`、`/status`,也能打 `/mkdir`、`/remove`、`/move`、
|
|
27
|
+
`/upload` 等写接口。原有的 `x-dsh-mcloud: 1` **不是安全边界**,静态请求头任何网页都能自己加。
|
|
28
|
+
|
|
29
|
+
现在所有路由统一过一道闸(`lib/request-guard.js`):
|
|
30
|
+
|
|
31
|
+
- **Host** 必须是本部署自己的 authority(环回 / 监听器绑定 IP / `allowedAuthorities`),
|
|
32
|
+
端口要对得上监听器;解析不出、带 userinfo、带路径的一律拒
|
|
33
|
+
- **Origin** 必须与 Host 同源;`null`(沙箱 iframe、`file:` 页面)直接拒
|
|
34
|
+
- **`Sec-Fetch-Site: cross-site`** 一票否决
|
|
35
|
+
|
|
36
|
+
新增 24 项回归测试(`npm test`)。其中 4 条攻击路径用例在 0.3.0 上全部失败,本版全部通过。
|
|
37
|
+
|
|
38
|
+
**新增配置**:`allowedAuthorities`,只有挂了反代或用自定义域名访问时才需要。
|
|
39
|
+
|
|
40
|
+
0.3.0 的功能与界面不变。
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
20
44
|
## 0.3.0
|
|
21
45
|
|
|
22
46
|
**界面重做为资源管理器风格**(登录页保持不变)。
|
package/README.md
CHANGED
|
@@ -101,10 +101,10 @@ dsh plugin --profile desktop add "link:/path/to/dsh-mcloud"
|
|
|
101
101
|
| 操作 | 说明 |
|
|
102
102
|
| --- | --- |
|
|
103
103
|
| 浏览目录 | 左侧点文件夹,右侧显示它的内容;也可双击右侧文件夹进入 |
|
|
104
|
-
| 返回上级 | 点面包屑跳回任意一层,或点左侧文件夹树 |
|
|
105
|
-
| 调整侧栏宽度 | 拖动文件夹树与列表之间的分隔线,双击恢复默认 |
|
|
106
|
-
| 容量 | 顶部栏底部的一条通栏进度线,数值居中显示 |
|
|
107
|
-
| 调整列宽 | 拖动「大小」两侧的竖线,双击恢复默认 |
|
|
104
|
+
| 返回上级 | 点面包屑跳回任意一层,或点左侧文件夹树 |
|
|
105
|
+
| 调整侧栏宽度 | 拖动文件夹树与列表之间的分隔线,双击恢复默认 |
|
|
106
|
+
| 容量 | 顶部栏底部的一条通栏进度线,数值居中显示 |
|
|
107
|
+
| 调整列宽 | 拖动「大小」两侧的竖线,双击恢复默认 |
|
|
108
108
|
| 搜索 | 顶部搜索框,在当前目录及子目录中按文件名查找 |
|
|
109
109
|
| 上传 | 右键 → 上传文件 / 上传文件夹 / 拖动上传 |
|
|
110
110
|
| 下载 | 右键 → 下载到本地 / 打开下载直链 / 下载整个文件夹 |
|
|
@@ -114,8 +114,8 @@ dsh plugin --profile desktop add "link:/path/to/dsh-mcloud"
|
|
|
114
114
|
|
|
115
115
|
**下载目录**:左上角「下载到」按钮,点开可以手填路径,或点「选择目录」用系统对话框逐级选。
|
|
116
116
|
|
|
117
|
-
**传输进度**:面板底部有一条固定的进度条,空闲时是一条淡色细线。传输时变粗变蓝,
|
|
118
|
-
显示文件名与百分比;完成后保持 5 秒再缓缓淡出。
|
|
117
|
+
**传输进度**:面板底部有一条固定的进度条,空闲时是一条淡色细线。传输时变粗变蓝,
|
|
118
|
+
显示文件名与百分比;完成后保持 5 秒再缓缓淡出。
|
|
119
119
|
|
|
120
120
|
### 模型工具
|
|
121
121
|
|
|
@@ -154,18 +154,39 @@ dsh plugin --profile desktop add "link:/path/to/dsh-mcloud"
|
|
|
154
154
|
config:
|
|
155
155
|
credentialDir: '/custom/credential/dir' # 凭据目录
|
|
156
156
|
enableWrites: false # 设为 false 则关闭写入审批闸(不建议)
|
|
157
|
+
# 仅当你在 DSH 前面挂了反代 / 用自定义域名访问时才需要:
|
|
158
|
+
allowedAuthorities: ['dsh.example.com']
|
|
157
159
|
```
|
|
158
160
|
|
|
161
|
+
## 安全说明
|
|
162
|
+
|
|
163
|
+
`/api/dsh-mcloud/*` 是一组挂在本机 webServer 上的接口,能读写你已登录的云盘。
|
|
164
|
+
DSH 的 `webServer.register` 只按路径分发、**不做** Host / Origin 准入,所以插件自己
|
|
165
|
+
带了一道闸(`lib/request-guard.js`),每条路由都会过:
|
|
166
|
+
|
|
167
|
+
- **Host** 必须是本部署自己的 authority(环回 / 监听器绑定 IP / `allowedAuthorities`),
|
|
168
|
+
且端口要对得上监听器;
|
|
169
|
+
- **Origin** 必须与 Host 同源,`null` 直接拒;
|
|
170
|
+
- **`Sec-Fetch-Site: cross-site`** 一票否决。
|
|
171
|
+
|
|
172
|
+
这挡住的是 DNS rebinding 和「你用浏览器打开恶意网页、它替你打本机接口」这两类攻击。
|
|
173
|
+
注意 `x-dsh-mcloud: 1` 这个请求头**只是标记,不是安全边界** —— 任何网页都能自己加,
|
|
174
|
+
真正起作用的是上面三条。
|
|
175
|
+
|
|
176
|
+
`npm test` 跑安全回归(24 项,含 4 条攻击路径)。
|
|
177
|
+
|
|
159
178
|
## 文件结构
|
|
160
179
|
|
|
161
180
|
```
|
|
162
|
-
lib/index.js
|
|
163
|
-
lib/
|
|
164
|
-
lib/
|
|
165
|
-
lib/
|
|
166
|
-
lib/
|
|
167
|
-
|
|
168
|
-
|
|
181
|
+
lib/index.js 宿主端:网盘客户端、工具、HTTP 路由、凭据存储
|
|
182
|
+
lib/request-guard.js 请求闸:Host / Origin / DNS rebinding 防护
|
|
183
|
+
lib/login.js 账号密码登录
|
|
184
|
+
lib/scan-login.js 扫码登录
|
|
185
|
+
lib/transfer.js 上传下载的传输层
|
|
186
|
+
lib/client.js 会话页面板(登录页、文件浏览、右键菜单、传输进度)
|
|
187
|
+
cordis.patch.yml bundle patch
|
|
188
|
+
locale/*.json 面板标题与描述
|
|
189
|
+
test/ 安全回归测试(node --test)
|
|
169
190
|
```
|
|
170
191
|
|
|
171
192
|
## 免责声明
|