问题:插件 web 路由无访问控制围栏
环境:DSH Web profile,@yejiming/dsh-data-agent v0.1.3(npm)。审查 lib/routes.js(约 56-67 行)发现:
/plugins/data-agent/* 路由(connect、schemas、catalog 等)直接挂 harness web server,无 loopback / 已配对设备校验。其中 connect 会写入数据库连接凭据(敏感、破坏性),schemas 读取元数据。对比生态内 @linxin666/dsh-client-ui-skill-explorer 实现了 isSkillExplorerAllowed 护栏,本插件没有同类护栏。
若 harness web server 不只监听 loopback(远程访问、端口转发等场景),同机/局域网页面可跨源向这些端点发起请求(DNS rebinding / CSRF 友好路径),导致凭据写入或元数据泄露。
建议
- 所有
/plugins/data-agent/* 路由增加来源校验(loopback/已配对设备),参考 isSkillExplorerAllowed 的生态实现。
connect(写凭据)在护栏基础上建议再过一次宿主的 approval/确认门。
client.js bundle 约 1.7MB(含 echarts),可考虑按需加载/拆分,减少首屏开销(非阻塞项)。
附:行号来自本地安装的 lib/routes.js v0.1.3;repo 内对应 src 请按路由路径定位。
问题:插件 web 路由无访问控制围栏
环境:DSH Web profile,@yejiming/dsh-data-agent v0.1.3(npm)。审查
lib/routes.js(约 56-67 行)发现:/plugins/data-agent/*路由(connect、schemas、catalog 等)直接挂 harness web server,无 loopback / 已配对设备校验。其中connect会写入数据库连接凭据(敏感、破坏性),schemas读取元数据。对比生态内@linxin666/dsh-client-ui-skill-explorer实现了isSkillExplorerAllowed护栏,本插件没有同类护栏。若 harness web server 不只监听 loopback(远程访问、端口转发等场景),同机/局域网页面可跨源向这些端点发起请求(DNS rebinding / CSRF 友好路径),导致凭据写入或元数据泄露。
建议
/plugins/data-agent/*路由增加来源校验(loopback/已配对设备),参考isSkillExplorerAllowed的生态实现。connect(写凭据)在护栏基础上建议再过一次宿主的 approval/确认门。client.jsbundle 约 1.7MB(含 echarts),可考虑按需加载/拆分,减少首屏开销(非阻塞项)。附:行号来自本地安装的 lib/routes.js v0.1.3;repo 内对应 src 请按路由路径定位。