首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用新的Harmony直接代理实现javascript沙箱

使用新的Harmony直接代理实现javascript沙箱
EN

Stack Overflow用户
提问于 2013-05-29 18:29:12
回答 1查看 171关注 0票数 0

我发现this gist使用withthe Harmony direct proxies为第三方代码实现了一个沙箱。它有多有用?使用代理实现一个合适的javascript沙箱是可能的吗?这种方法的怪癖和/或缺点是什么?

(在这个问题中,我正在寻找一个纯javascript的解决方案,所以没有Caja和类似的服务器端项目)

EN

回答 1

Stack Overflow用户

发布于 2013-05-29 22:11:05

原则上,这种方法应该是可行的。然而,有几件事需要注意:

显然,这需要将所有不受信任的代码放入-

  1. 中。在实践中,这可能变得相当unwieldy.
  2. Moreover,它微妙地改变了代码中包含的最外层的var/function声明的含义,这些声明现在变成了局部的,而不是全局对象上的属性。另一方面,未声明的变量仍将保存在全局对象中。这可能会打破一些疯狂的“programs.
  3. Because”语义,现代JavaScript VM放弃了在其作用域内优化代码的大多数尝试。对于带有“with”的东西,生成的代码很容易就会慢两个数量级。

因此,总的来说,我不推荐这种方法。使用SES或Caja要好得多(不确定在哪种意义上将其称为服务器端)。

(还值得注意的是,ES6的模块加载器将提供一种更干净的方式来沙箱全局对象。但很难说什么时候会有这些东西。不会太快。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16811521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档