javascript - 我应该在我的 Electron 应用程序中使用上下文隔离吗

标签 javascript electron

我和我的 friend 几乎完成了 our project .它基本上是 Spotify 的一个正在播放/迷你播放器应用程序。当我检查渲染进程控制台时,我又收到一个警告,我想清除。它是关于 worldSafeExecuteJavaScript 是真的以及它是如何不安全的。我进一步研究了它,结果发现我也需要打开 contextIsolation。我进行了更多研究,发现我无法在渲染过程中使用 require。我试着查找文档,但我很困惑。从长远来看,我们希望确保我们的应用程序安全,尤其是因为我在上大学,而我的 friend 在学校工作时可能会很忙;并且由于 contextIsolation 在 Electron 12 中默认为真。

在我们的渲染进程 javascript 中,我们只需要 require jQuery 和 ipcRenderer。我们如何合并 contextBridge(我想这就是它的名字),以将 jQuery 和 ipcRenderer 导入我们的 javascript 以进行渲染过程?

最佳答案

我通过使用 contextBridge 让我的应用程序与 contextIsolation 一起工作。这是我的 main.js webPreferences 和预加载脚本:

    webPreferences: {
      worldSafeExecuteJavaScript: true,
      contextIsolation: true,
      preload: path.join(__dirname, "preload.js")
    },

这里是 preload.js 来导入 ipcRenderer:

const { contextBridge, ipcRenderer } = require('electron')

contextBridge.exposeInMainWorld(
    'ipcRenderer',
    {
/*
Important note: This will get it working, 
but I'm going to make multiple methods for 
each time I'm using this to heighten security.
https://www.electronjs.org/docs/tutorial/context-isolation#security-considerations
*/
      send: (channel, arg) => ipcRenderer.send(channel, arg),
      on: (event, data) => ipcRenderer.on(event, data)
    }
)

To import jQuery ,我只是用 index.html 导入它:

  <head>
    <meta charset="UTF-8">
    <title>Gemini</title>
    <meta http-equiv="Content-Security-Policy" content="script-src 'self'">
    <link rel="stylesheet" href="style.css">
    <link rel="stylesheet" href="macos.css">
    <script type="text/javascript" src="node_modules/jquery/dist/jquery.min.js"></script>
    <link rel="stylesheet" href="node_modules/@fortawesome/fontawesome-free/css/all.css">
  </head>

我不确定通过 HTML 导入 jQuery 是否更安全。

关于javascript - 我应该在我的 Electron 应用程序中使用上下文隔离吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63826089/

相关文章:

javascript - 按下 Enter 时将连字符添加到文本区域

javascript - 正则表达式提取最后一个正斜杠和特定字符串之间的文本(javascript)

javascript - 如何正确制作 D3 事件监听器?

javascript - 区域设置日期字符串不转换

javascript - IE 中的 HTML5 Canvas 内存问题

javascript - new Date().setFullYear(new Date().getFullYear()) 返回一个 13 位数字

architecture - 在 Electron 框架中制作的应用程序不安全?

javascript - Electron 应用程序无法启动

reactjs - ElectronJS React自定义菜单事件未定义

node.js - Windows 中 Electron 的 SQLITE3 安装错误