Tag: 沙箱

用于运行不可信用户的Node.js Sandbox提交代码

我正在尝试获取能够运行不受信任的用户提交的代码的node.js沙箱。 有几个关于这个职位,但他们都是老。 我希望一个最新的职位将有所帮助。 (2011) 如何在node.js沙箱中安全地运行用户提交的脚本? (2012) 如何运行不受信任的代码serverside? (2013) 安全沙盒并执行用户提交的JavaScript? 通过其他职位和研究,我发现了以下沙箱和漏洞: (Jailed) https://github.com/asvd/jailed (Jailed Exploit) https://github.com/asvd/jailed/issues/33 (沙盒) https://github.com/gf3/sandbox (沙盒利用) https://github.com/gf3/sandbox/issues/50 (Sandcastle) https://github.com/bcoe/sandcastle (Sandcastle Exploit) https://github.com/bcoe/sandcastle/issues/70 (节点的VM) https://nodejs.org/api/vm.html#vm_vm_runinthiscontext_code_options (在文档中)注意:vm模块不是安全机制。 不要用它来运行不可信的代码。 (VM2) https://github.com/patriksimek/vm2 (VM2漏洞) https://github.com/patriksimek/vm2/issues/76 有没有人知道没有已知漏洞的node.js沙箱?

在node.js中创build一个自定义的沙箱(只能在某个目录下读取,不能在任何地方写入)

我正在尝试创build一个运行提交的脚本的应用程序,并且希望尝试对提交的脚本进行沙盒处理。 脚本需要能够读取某个目录(及其所有子目录),但不能写入,除了能够读取以外,不应该能够读取任何无法在浏览器中完成的事情(即使用http下载文件)。 我怎么去做这个?

debugginggf3 /沙箱模块

我在做node.js中的宝贝步骤,我正在试着了解沙箱机制。 目前我正在使用节点v4.0.0和节点检查员v0.12.3。 我已经安装了gf3 / sandbox模块,并运行这个简单的代码: var s = new Sandbox(); s.run('1 + 1 + " apples"',function(output) { console.log(output.result); }); 为了容易debugging,我还评论了sandbox.js文件中的超时函数: // timer = setTimeout(function() { // self.child.stdout.removeListener('output', output); // stdout = JSON.stringify({ result: 'TimeoutError', console: [] }); // self.child.kill('SIGKILL'); // }, self.options.timeout); 问题是,debugging不会破坏shovel.js任何行代码,并且我100%确定模块正在使用它的代码。 这是为什么 ? 我能做些什么来debuggingshovel.js ?

Rhino是唯一支持沙盒和可序列化连续的解释器吗?

我需要(a)沙箱,和(b)可序列化的延续。 我将服务器端游戏脚本公开给用户 ,它是非常asynchronous的,因此callback模式使得代码对于新手程序员来说是不可读的和非常不可接近的。 延续传球风格是另一种select,但也有相同的缺点。 asynchronous,对用户的查询可能需要几个月才能完成。 请参阅http://weaverengine.com/platforms获取我的完整列表 可序列化的延续看起来像是一个非常优雅的解决scheme,但很less有解释者支持它们。 到目前为止,似乎我唯一的select是犀牛。 我希望NodeJS或者PyPy能够工作,但是迄今为止的证据却是相反的。 Lua似乎支持协程 ,但我找不到任何有关是否支持可序列化的延续的信息。 Lua做沙箱很好。 NodeJS有Jefe提供非常好的沙盒,但是对于继续序列化没有任何东西 。 PyPy还没有将他们的沙盒和可序列化的继续支持细化到可以一起使用的地步,从我在pypy-dev邮件列表中理解的地方。 JavaFlow提示,如果所有的类都实现了Serializeable,那么Java延续就可以被序列化了。 但是除非我能在JavaFlow之上运行一个好的dynamic语言的解释器,否则我不感兴趣。 Java和Rhino是我唯一的select吗? 是否有NodeJS的分支持续支持? 任何符合这些标准的合理的,dynamic的语言?

安全沙盒并执行用户提交的JavaScript?

我希望能够让用户提交任意的JavaScript代码,然后将其发送到Node.JS服务器,并在将输出发送回多个客户端(如JSON)之前安全地执行。 eval函数让人想起,但我知道这有多个安全问题(用户提交的代码将能够访问节点的文件API等)。 我曾经看到过一些像Microsoft Web Sandbox和Google Caja这样的项目,它们允许执行清理标记和脚本(用于在网站上embedded第三方广告),但似乎这些是客户端工具,我不确定他们是否可以在Node中安全使用。 有没有一个标准的方法来沙盒和在Node中执行不可信的JavaScript,获得输出。 尝试和做这个服务器端是错误的吗? 编辑:用户能够充分利用JavaScript的全部function并不重要,事实上,能够挑选并select将提供给用户代码的API将是优选的。 编辑:我打算继续前进,并与我发现的更新。 这个Sandcastle模块( bcoe/sandcastle sandcastle)似乎旨在做我脑海中所想的事情。 不知道它是多么的安全,但是因为我不是那么重要,我想我会试试。 如果我能够成功地做到这一点,我会添加自己的答案。