gpt4 book ai didi

javascript - Electron,如何在没有nodeIntegration的情况下访问 Node API

转载 作者:行者123 更新时间:2023-11-30 20:10:37 25 4
gpt4 key购买 nike

我将外部内容加载到我的 Electron 应用程序中,这可能是不安全的。我想以类的形式向这个卸载的内容公开一个 API。此 API 类应有权访问 nodeIntegration 权限,但我不希望不受信任的外部内容拥有此类权限。不受信任的代码被加载到 webview 中,并且 API 类通过 preload 加载到 webview 中.加载脚本并创建类,它可以毫无问题地执行我想要的所有功能。但问题是,在脚本完成加载后,我想保留在全局范围内的类被销毁了。此不受信任的代码访问我的 API 的唯一方法是此类保留在全局范围内。 是否可以在预加载的脚本中实例化一个可以访问 nodeIntegration 的类,并让非预加载的脚本文件可以访问该类?

例子:

预加载脚本:

var API = function() {
const fs = remote.require('fs');

API.createFile = function(){
/*... do stuff with fs here ...*/
}
}

非预加载脚本(不受信任的代码)

var instanceOfAPI = new API();

instanceOfAPI.createFile(); //should work
fs.writeFile(); //should NOT work

最佳答案

将API放在预加载脚本下的window变量中。示例:

var API = function() {
const fs = remote.require('fs');

API.createFile = function(){
/*... do stuff with fs here ...*/
}
}

window.api = new API();

以下内容现在可以在无权访问 nodeIntegration 的脚本中使用

window.api.createFile() //works
fs.writeFile() //does not

关于javascript - Electron,如何在没有nodeIntegration的情况下访问 Node API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52451675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com