安全漏洞 / 高 / 后端服务
electron/services/window-manager.service.ts
WindowManager 创建 BrowserWindow 时配置:
new BrowserWindow({ webPreferences: { sandbox: false, // 削弱了沙箱 nodeIntegration: false, contextIsolation: true, }, });
sandbox: false 允许渲染进程访问 Node.js API(即使 contextIsolation: true):
sandbox: false
new BrowserWindow({ webPreferences: { sandbox: true, // 启用沙箱 nodeIntegration: false, contextIsolation: true, preload: join(__dirname, 'preload.js'), }, });
启用 sandbox 后:
electron
可能需要重构部分 preload 代码,建议分阶段实施。
文件: electron/services/window-manager.service.ts
修复: sandbox: false 改为 sandbox: true。已确认 preload.ts 仅使用 contextBridge/ipcRenderer(sandbox 下可用)、@electron-toolkit/preload(兼容 sandbox)和 process.contextIsolated/process.defaultApp(sandbox 下只读可用),不依赖 fs/child_process 等 Node API,可安全启用沙箱。
sandbox: true
preload.ts
contextBridge
ipcRenderer
@electron-toolkit/preload
process.contextIsolated
process.defaultApp
验证: tsc --noEmit 类型检查通过。
tsc --noEmit
No dependencies set.
The note is not visible to the blocked user.
问题类型
安全漏洞 / 高 / 后端服务
文件位置
electron/services/window-manager.service.ts问题描述
WindowManager 创建 BrowserWindow 时配置:
sandbox: false允许渲染进程访问 Node.js API(即使 contextIsolation: true):影响
建议修复
启用 sandbox 后:
electron模块的子集(contextBridge、ipcRenderer 等)可能需要重构部分 preload 代码,建议分阶段实施。
修复说明
文件:
electron/services/window-manager.service.ts修复:
sandbox: false改为sandbox: true。已确认preload.ts仅使用contextBridge/ipcRenderer(sandbox 下可用)、@electron-toolkit/preload(兼容 sandbox)和process.contextIsolated/process.defaultApp(sandbox 下只读可用),不依赖 fs/child_process 等 Node API,可安全启用沙箱。验证:
tsc --noEmit类型检查通过。