首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript沙盒

Javascript沙盒
EN

Stack Overflow用户
提问于 2010-06-07 11:25:41
回答 3查看 4.2K关注 0票数 6

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

代码语言:javascript
复制
with(Namespace) {
    //App code goes here where they can only access Namespace.*
}

如何轻松地绕过这一点,还有什么其他方法可以做到?宁可不必审核每个提交的应用程序。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-07 11:32:11

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

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

票数 1
EN

Stack Overflow用户

发布于 2010-06-07 12:21:49

那么,目前沙箱代码的选项是:

  • Google Caja Project
  • ADSafe

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

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

票数 8
EN

Stack Overflow用户

发布于 2010-06-07 11:28:21

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

Link的用法。

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

https://stackoverflow.com/questions/2986908

复制
相关文章

相似问题

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