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

Javascript沙盒?
EN

Stack Overflow用户
提问于 2011-02-19 01:37:18
回答 7查看 8.3K关注 0票数 14

是否可以通过覆盖各种函数(如alertwindow.locationeval )来沙箱用户提交的Javascript

我不是在寻找一个完美的解决方案。我相信有些人仍然会找到一种重新排列div的方法来拼写脏话或恶意的东西,但如果我能100%可靠地禁用页面重定向,我会很高兴。

我在Chrome中尝试过,做了一些类似这样的事情

代码语言:javascript
复制
context={}; //use this to prevent `this` from being `window`
context.f=function(){
  var window=null,location=null,eval=function(){};
  console.log(window); //also the other two
};
context.f();

看起来很有希望。如果我用用户提交的代码替换console行(检查paren平衡),这是一个非常糟糕的想法还是稍微糟糕的想法?在Chrome上,我仍然可以通过this来运行并重新定义东西,但这对我来说是可以接受的。

EN

回答 7

Stack Overflow用户

发布于 2011-02-19 01:41:18

您可以使用Microsoft Web SandboxGoogle Caja

票数 11
EN

Stack Overflow用户

发布于 2013-01-21 16:56:54

这里还有两个可能的解决方案(免责声明:我自己才刚刚开始寻找,所以我不是专家)。

这非常有趣,使用web worker来沙箱不受信任的代码:

https://github.com/eligrey/jsandbox

尽管如此,我想知道是否会继续维护它,或者下面的html5“沙盒”iframe属性是否会取代它:

http://www.w3schools.com/html5/att_iframe_sandbox.asp

票数 4
EN

Stack Overflow用户

发布于 2013-08-23 02:12:35

vm.js是一个用纯coffeescript实现的javascript虚拟机(应该在相对较旧的浏览器中运行),可以用作轻量级的进程内沙箱。它可以打破无限循环,保护全局对象不被修改。

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

https://stackoverflow.com/questions/5044608

复制
相关文章

相似问题

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