首页 > 解决方案 > 加载本地内容时的上下文隔离

问题描述

我已经阅读了电子安全策略文档(https://electronjs.org/docs/tutorial/security)和为即将推出的电子 5.x 设置的新默认值(https://electronjs.org/blog/electron- 4-0)并且无法确定在加载本地 Web 内容(本地 index.html)时是否需要 contextIsolation。

我了解加载远程内容时需要它,但加载本地内容时真的有必要吗?如果是这样,应该如何使用在主进程和渲染器进程之间的预加载脚本中配置的桥 API 以便在渲染器进程的 Window 对象上公开 API?

标签: electron

解决方案


我不是安全专家,但在我看来,如果你从不加载外部内容,你不会从打开上下文隔离中获得太多好处。

该标志的全部意义在于在隔离的 JavaScript 环境中运行您的预加载脚本,因此它不会受到页面对 JavaScript 全局变量或对象原型所做的任何恶意或其他更改的影响。

例如,如果我的外部页面覆盖Date.now

Date.now = () => return 1;

并且您的预加载脚本或您正在调用的 Electron API 正在调用Date.now(),那么它将使用覆盖的版本而不是原始函数。

contextIsolation标志减轻了这种类型的攻击。

Electron自己(强调):

为远程内容启用上下文隔离

所以不,本地内容不需要它。


推荐阅读