electron - 加载本地内容时的上下文隔离
问题描述
我已经阅读了电子安全策略文档(https://electronjs.org/docs/tutorial/security)和为即将推出的电子 5.x 设置的新默认值(https://electronjs.org/blog/electron- 4-0)并且无法确定在加载本地 Web 内容(本地 index.html)时是否需要 contextIsolation。
我了解加载远程内容时需要它,但加载本地内容时真的有必要吗?如果是这样,应该如何使用在主进程和渲染器进程之间的预加载脚本中配置的桥 API 以便在渲染器进程的 Window 对象上公开 API?
解决方案
我不是安全专家,但在我看来,如果你从不加载外部内容,你不会从打开上下文隔离中获得太多好处。
该标志的全部意义在于在隔离的 JavaScript 环境中运行您的预加载脚本,因此它不会受到页面对 JavaScript 全局变量或对象原型所做的任何恶意或其他更改的影响。
例如,如果我的外部页面覆盖Date.now
:
Date.now = () => return 1;
并且您的预加载脚本或您正在调用的 Electron API 正在调用Date.now()
,那么它将使用覆盖的版本而不是原始函数。
该contextIsolation
标志减轻了这种类型的攻击。
Electron自己说(强调):
为远程内容启用上下文隔离
所以不,本地内容不需要它。
推荐阅读
- swift - 重建失败 HelloPhotogrammetry 错误
- javascript - 如何解决javascript中的模板文字问题?
- sql - Oracle:从结果集 ID 生成 WHERE 子句?
- django - DRF:是否可以进行双面对象创建和关系分配?
- python - Python根据另一个excel表中的关键词对excel中的数据进行分类
- c++ - SWIG LUA C++ 包装器
- c++ - 排序列表类 cpp 中的 const_iterator 实现
- flutter - 在颤振中声明库的版本时^是什么意思
- node.js - 运行依赖于正在运行的服务器的 NPM 自定义脚本
- java - ENOENT(没有这样的文件或目录) - 当文件存在于 Android Java 中时