做了一种很新的前端 js 代码隔离方案

359 天前
 FurryR

大览

secure-vm GitHub

用最新的技术重新造了一遍 evel 的轮子。

为啥要做?

为了运行不可信任的用户代码/做微应用。可能有的场景有:

现行的前端可用沙箱有 ses 但仍在提案中,而这个大概是支持 ES2021 就能跑的程度了。

相比 ses 这个 TC39 提案来说 secure-vm 的心智负担极小(就个 vm 函数),虽然部分细节不一致但是相对也值得了。

未来

目前这个项目只有一个指定 initalizer 的功能,用来和别的什么东西作兼容。未来还会支持:

总体来说

这是一个又新又旧并且标准还未规定行为的 JS 沙箱。

虽然目前在早期阶段,但我希望后面会越来越好的,加油!

1965 次点击
所在节点    分享创造
7 条回复
shendaowu
358 天前
将来标准的 JavaScript 会支持类似沙箱的东西吗?我看 TC39 里的 ShadowRealm 好像是干这个的?你的“这个 TC39 提案”是不是忘了加链接了?
musi
358 天前
很新?不就是 iframe + proxy ?这不是现在微前端主流沙箱隔离方案?
musi
358 天前
另外这种隔离方案防君子不防小人,沙箱逃逸方案简直不要太多
musi
358 天前
忘了说了,现在 shadowRealm 的 polyfill 也是这种实现
shendaowu
358 天前
@musi 问一下大佬未来 JavaScript 标准中会有能防小人的比较安全的类似沙箱的东西吗?会有的话大概还要等几年?
musi
357 天前
@shendaowu 到目前为止 js 提案中还没有那种稍微安全的 API 出现,另外值得一提的是,这种提案涉及到底层,必须由浏览器底层去适配,由 JS 自己去实现是不现实的。而每个浏览器由自己的安全模型,比如 Chrome 。之前 Chrome 也说了下内部对于 shadowrealm 的讨论,有兴趣可以看看这里 https://github.com/tc39/notes/blob/main/meetings/2021-01/jan-26.md#realms-update
linwuhi
357 天前
很不错

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/997175

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX