目前,我正在尝试促进桌面电子应用与嵌入电子网络视图中的远程网络应用之间的通信。出于安全考虑,必须在webview上禁用nodeintegration。
但是,ipcRenderer需要节点,因此必须在预加载脚本中加载webapp端的任何事件侦听器。这是不可取的。我找到的解决方法是简单地向web应用程序公开ipcRenderer本身。像这样:
someDesktopScript.js
webview.send("testNote", "test");
preload.js
const {ipcRenderer} = require('electron')
class iTest {
ipcInterfaceTest() {
return ipcRenderer;
}
}
let local = new iTest ();
window.desktop = {local};
webApp脚本:
window.desktop.local.ipcInterfaceTest().on(testNote, (event, stuff) => {
//stuff
}
我觉得这不是一个好主意,可能会引发其他安全问题。如果是这样,有没有办法解决这个问题,或者更好的解决方法我不知道会达到相同的效果吗?
否则,这样做安全吗?我对Electron的ipcRenderer承担多少安全责任的了解是有限的。