进程沙箱
Electron 的沙箱来源于 Chromium,每个进程只能访问 CPU 和内存,其他授权操作需要派遣任务给更高权限的进程。
渲染进程
Electron 的渲染进程与 Chromium 类似,无法访问 Node 和 Electron API,只能通过与主进程通信来完成相关操作。
preload 脚本
允许访问部分 Electron 和 Node API。
- electron
- contextBridge
- crashReporter
- ipcRenderer
- nativeImage
- webFrame
- node:events
- node:timers
- node:url
- Buffer
- process
- clearImmediate
- setImmediate
禁用 Electron 沙箱
js
const win = new BrowserWindow({
webPreferences: {
sandbox: false,
},
});
启用 nodeIntegration
也会禁用沙箱:
js
const win = new BrowserWindow({
webPreferences: {
nodeIntegration: true,
},
});
全局启用沙箱
js
app.enableSandbox();
禁用 Chromium 沙箱
禁用 Chromium 所有进程的沙箱,只推荐在测试时使用。
js
app.commandLine.appendSwitch('--no-sandbox');