Electron 限制 iframe 脚本调用 Node.js - 安全性指南
在 Electron 中,可以使用 'contextIsolation' 选项来限制 iframe 中的脚本调用 Node.js。以下是一种方法:
- 在主进程的 'BrowserWindow' 中设置 'contextIsolation' 选项为 'true',以启用上下文隔离:
const { app, BrowserWindow } = require('electron')
app.whenReady().then(() => {
const mainWindow = new BrowserWindow({
webPreferences: {
contextIsolation: true,
// 其他选项...
}
})
// 其他代码...
})
- 在渲染进程中,可以使用 'preload' 脚本来与主进程进行通信,并在其中限制对 Node.js 的访问。创建一个 'preload.js' 文件,并在渲染进程中设置 'preload' 选项来加载该脚本:
// preload.js
// 禁止对 Node.js APIs 的访问
const { contextBridge } = require('electron')
contextBridge.exposeInMainWorld('api', {
// 这里可以暴露一些安全的 API,供渲染进程调用
})
// 渲染进程
const { ipcRenderer } = require('electron')
// 使用渲染进程中的全局变量 window.api 调用暴露的 API
icpRenderer.invoke('api.someFunction', args)
.then(result => {
// 处理结果
})
.catch(error => {
// 处理错误
})
这样,iframe 中的脚本将不能直接调用 Node.js,而是通过与主进程通信来间接访问 Node.js 功能。
原文地址: https://www.cveoy.top/t/topic/o1EF 著作权归作者所有。请勿转载和采集!