思想斗争共进行了四个版本,它们的图示如下
插件与 Electron
直接通信,导致 ipc
接口泄露
接入 qiankun
沙盒模型,但插件可以控制 props
,伪造 appName
nanote-api
做中间代理掌握 props
,但插件仍可以通过篡改源码的方式伪造 appName
,甚至直接无视 nanote-api
nanote-api
在插件开发时可引入,打包时必须去除,运行时动态引入
考虑直接使用 iframe
而不是 qiankun
,因为它原生的 JS、CSS 隔离机制是最好的,之前使用 qiankun
是因为安全问题,
现在可以模仿类似机制,通过 fetch
方法获取它的资源引用,最后把 nanote-api
注入,创建虚拟环境并执行
既创建了良好的隔离环境,又避免了接口被篡改,同时取到了 qiankun
和 iframe
的优点