我已经从this Vuetify's boilerplate创建了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
字符串
提问:
什么可能导致这个问题- Node,Vue.js,webpack的localhost配置?我该怎么办?
7条答案
按热度按时间laawzig21#
在
main.js
中添加以下行:process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'true';
个但是,您应该阅读Security, Native Capabilities, and Your Responsibility以充分理解这样做的含义。
91zkwejq2#
你有这个:
电子安全警告此呈现器进程已启用Node.js集成并尝试加载远程内容。这会使此应用的用户面临严重的安全风险。
因为从Electron Documentation的第二条安全建议中
2)禁用远程内容的Node.js集成
在加载远程内容的任何呈现器(BrowserWindow、BrowserView或WebView)中禁用Node.js集成是至关重要的。这样做的目的是限制授予远程内容的权限,从而使攻击者在用户获得在您的网站上执行JavaScript的能力时,更难对其造成伤害。
在此之后,您可以授予特定主机的其他权限。例如,如果您打开的是指向“https://my-website.com/“的BrowserWindow,则可以给予该网站提供所需的功能,但不能提供更多。
为什么?为什么?
如果攻击者能够跳出呈现器进程并在用户计算机上执行代码,则跨站脚本(XSS)攻击更加危险。跨站脚本攻击相当常见--尽管是个问题,禁用Node.js集成有助于防止XSS升级为所谓的“远程代码执行”(RCE),攻击
怎么做的?
个字符
停用Node.js整合时,您仍然可以将使用Node.js模块或功能的API公开给您的网站。预先载入指令码仍然可以存取require和其他Node.js功能,让开发人员可以将自订API公开给远端载入的内容。
在下面的示例预加载脚本中,稍后加载的网站将可以访问
window.readConfig()
方法,但不能访问Node.js功能。型
因此,系统会警告您,以便您可以禁用远程内容的Node.js集成。
我希望这有助于回答你的问题。
guicsvcw3#
Electron security checklist提到了如何处理安全警告。特别是,当从
file:
协议提供index.html
服务时(您不能使用HTTP CSP头),可以使用Meta标记用于相同的目的,如安全检查表中所述:CSP HTTP头。建议使用
字符串
.但我发现(在GitHub here上得到了帮助)这个更实用,因为它允许使用
script src
:型
关于content-security-policy.com上的CSP的更多信息。
f8rj6qna4#
添加
字符串
这样,错误信息就会消失。
的数据
z31licg05#
较新版本的electron Vue模板具有以下 * 警告 *,这些警告以前在beta版中使用以下命令禁用:
字符串
现在需要在
index.js
中执行以下操作:型
shyt4zoc6#
从Electron 2.0开始,开发人员将看到打印到开发人员控制台的警告和建议。它们仅在二进制文件的名称为Electron时显示,这表明开发人员正在查看控制台。
我建议您遵循Electron官方安全建议清单,以避免这些警告https://github.com/electron/electron/blob/master/docs/tutorial/security.md
alen0pnh7#
TLDR:在BrowserWindow选项中禁用eval()。
我刚刚在最新的电子,vue等上经历了这个过程,解决方案是禁用
eval()
,这可能是一个安全风险,因为它执行的代码不是来自你(或你的应用程序)。在窗口创建期间将
allowEval: false
添加到webPreferences
,以彻底防止警告:字符串
一些背景信息:electron实际上会尝试执行一些JavaScript代码(从使用
require('electron').executeJavaScript
的字符串),如果成功,它会认为您的代码不安全。