在 Electron 中,可以使用 'contextIsolation' 选项来限制 iframe 中的脚本调用 Node.js。以下是一种方法:

  1. 在主进程的 'BrowserWindow' 中设置 'contextIsolation' 选项为 'true',以启用上下文隔离:
const { app, BrowserWindow } = require('electron')

app.whenReady().then(() => {
  const mainWindow = new BrowserWindow({
    webPreferences: {
      contextIsolation: true,
      // 其他选项...
    }
  })

  // 其他代码...
})
  1. 在渲染进程中,可以使用 '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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录