Un1*_*Un1 27 node.js electron vuetify.js
我从这个Vuetify的样板创建了Electron-Vuejs-Vuetify项目
我在控制台中看到了这个警告:
Electron Security Warning
This renderer process has Node.js integration enabled and
attempted to load remote content. This exposes users of this app to severe security risks.
For more information and help, consult https://electronjs.org/docs/tutorial/security
Run Code Online (Sandbox Code Playgroud)
可能的原因是什么 - Node,Vue.js,webpack的localhost配置?我该怎么办?
ant*_*rek 23
你有这个:
电子安全警告此渲染器进程启用了Node.js集成并尝试加载远程内容.这会使此应用的用户面临严重的安全风险.
因为来自电子文档的第二个安全建议
在任何加载远程内容的渲染器(BrowserWindow,BrowserView或WebView)中禁用Node.js集成是至关重要的.目标是限制您授予远程内容的权限,从而使攻击者在您的用户能够在您的网站上执行JavaScript时更加难以对其造成伤害.
在此之后,您可以为特定主机授予其他权限.例如,如果您打开一个指向" https://my-website.com/ " 的BrowserWindow ,您可以为该网站提供所需的功能,但不能再提供.
如果攻击者可以跳出渲染器进程并在用户的计算机上执行代码,则跨站点脚本(XSS)攻击会更加危险.跨站点脚本攻击相当普遍 - 虽然存在问题,但它们的权力通常仅限于弄乱执行它们的网站.禁用Node.js集成有助于防止XSS升级为所谓的"远程执行代码"(RCE)攻击.怎么样?
// Bad
const mainWindow = new BrowserWindow()
mainWindow.loadURL('https://my-website.com')
// Good
const mainWindow = new BrowserWindow({
webPreferences: {
nodeIntegration: false,
preload: './preload.js'
}
})
mainWindow.loadURL('https://my-website.com')
Run Code Online (Sandbox Code Playgroud)
<!-- Bad -->
<webview nodeIntegration src="page.html"></webview>
<!-- Good -->
<webview src="page.html"></webview>
Run Code Online (Sandbox Code Playgroud)
禁用Node.js集成时,您仍然可以向您的网站公开使用Node.js模块或功能的API.预加载脚本继续可以访问require和其他Node.js功能,允许开发人员将自定义API公开给远程加载的内容.
在以下示例预加载脚本中,以后加载的网站可以访问window.readConfig()方法,但没有Node.js功能.
const { readFileSync } = require('fs')
window.readConfig = function () {
const data = readFileSync('./config.json')
return data
}
Run Code Online (Sandbox Code Playgroud)
因此,您已收到警告,以便您可以禁用Node.js集成远程内容.
我希望这有助于回答你的问题.
net*_*der 22
将以下行添加到main.js:
process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'true';
但是,您应该阅读安全性,本机功能和您的责任, 以充分理解这样做的含义.
添加
process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'true';
Run Code Online (Sandbox Code Playgroud)
像这样,错误消息就会消失。
较新版本的电子 Vue 模板具有这些警告,这些警告以前在测试版中使用以下方法禁用:
process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'true';
Run Code Online (Sandbox Code Playgroud)
现在需要您在您的index.js.
process.env.ELECTRON_DISABLE_SECURITY_WARNINGS = '1';
Run Code Online (Sandbox Code Playgroud)
Electron 安全清单列出了如何处理安全警告。特别是,index.html从file:协议(不能使用HTTP CSP标头)提供服务时,可以将meta标记用于相同的目的,如此处的安全性清单中所述:CSP HTTP标头。
建议使用
<meta http-equiv="Content-Security-Policy" content="default-src 'none'" />
Run Code Online (Sandbox Code Playgroud)
......但我发现(在GitHub上得到帮助这里)这一个更加实用,因为它允许使用script src:
<meta http-equiv="Content-Security-Policy" content="script-src 'self';" />
Run Code Online (Sandbox Code Playgroud)
有关content-security-policy.com上CSP的更多信息。