6

我想让开发人员用 Javascript 为网站编写一些自定义应用程序,但我想把它沙箱化,这样他们就不能做任何顽皮的事情,比如重定向用户、将正文显示设置为无等。我在 Javascript 中有一个命名空间,其中所有他们需要的功能在那里存在,所以我想创建一个沙箱将是:

with(Namespace) {
    //App code goes here where they can only access Namespace.*
}

解决这个问题有多容易,还有哪些其他方法可以解决?宁愿不必审核每个提交的应用程序。

4

3 回答 3

8

好吧,目前沙箱代码的选项是:

两者都允许您创建一个安全的环境,其中对全局对象和 DOM 的访问受到限制。

这些项目的主要目的是允许您安全地嵌入小部件和来自第三方的任何 Web 内容。

于 2010-06-07T04:21:49.497 回答
2

首先想到的是eval。他们可以使用它在包装器沙箱之外执行自定义代码。通过尝试包装代码来阻止坚定的开发人员将非常困难。

链接到 eval 的使用。

于 2010-06-07T03:28:20.590 回答
1

要强制执行沙箱,您必须在执行代码之前检查代码,捕获任何不合法的代码,如果发现,以某种方式阻止它运行。很繁琐,而且很长时间容易出错。

Facebook 至少在他们早期的平台上是这样做的,作为开发人员,我绝对不喜欢它。他们限制了可以使用的本机方法,并提供了一些有限的包装器。

于 2010-06-07T03:32:10.653 回答