在Javascript中嵌入Javascript(我很认真)?

时间:2011-08-26 07:46:22

标签: javascript google-chrome web sandbox

我正在开发一个项目,玩家可以在网站上放置图形对象,并使用脚本为其设置动画。由于脚本将被共享给所有参与的客户端,因此必须对脚本环境进行沙盒化,以便用户最终不会破坏页面所有部分的其他用户体验。

脚本可以访问共享的可视内容至关重要。因此,我无法完全将它们隔离在iframe中 - 除此之外,我想知道是否有更平滑的方法来分离上下文。

我一直在使用原生版本,我使用V8 javascript引擎使用单独的上下文,但现在我想把它带到浏览器 - 即使它只是谷歌浏览器。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

沙盒JavaScript本来就很难,无论你怎么努力,脚本都有可能突破。更好的做法可能是将脚本加载到iframe而无需直接访问主框架并允许它通过window.postMessage()与主框架通信。然后,您可以定义一个API,允许框架以这种方式使用,而不会给予太大的权力。

修改:如Web Workers所述Is It Possible to Sandbox JavaScript Running In the Browser?同样如此,浏览器对网络工作者的支持并不像window.postMessage()那样广泛(比较http://caniuse.com/#search=postMessagehttp://caniuse.com/#search=workers)。