上下文:
在Lua中,创建一个新的Lua VM非常简单而且非常便宜(4kb的内存)。因此,创建廉价的lua "jails“是微不足道的。然后,如果不受信任的代码行为不正常,我就会杀死Lua VM。
我知道https://github.com/Licenser/clj-sandbox,但它似乎只是围绕着Java……这将使不受信任的代码线程成为本机Java线程,这样我就无能为力了。
问题:
有没有办法创建廉价/轻量级的Clojure监狱?
发布于 2012-06-09 18:22:41
我是一个名为clojail的小型库的(共同)作者,它是对clj-sandbox的一种重新思考。它还利用了Java沙箱,而且还提供了用于沙箱Clojure特定事物的特性。tryclj和4clojure都利用了它。
我不明白你说剩下的是什么意思。JVM沙箱很棒,因为它可以防止I/O。Clojail通过允许超时来防止长时间运行的代码来完成剩下的工作。如果你所说的是“人们可以创建线程,而我不能杀死他们”,clojail会杀死在沙箱中创建的线程,并且通常会尽最大努力防止散乱的线程跑掉。JVM沙箱(和clojail特定的东西)仍然可以防止危险的代码在线程上运行。
综上所述,请查看clojail。这可能就是你所需要的。对于大多数目的来说,它已经足够了,而且是市面上唯一的jails游戏(除了clj-sandbox,它不需要维护)。它并不总是最好的解决方案,但它通常是最简单的。
下一步,如果clojail没有做您需要的事情,就是使用您自己的监听机制,这涉及到使用JVM沙箱和剥离JVM。这有大量的开销,所以如果可能的话,我会尽量避免。绝对不再是4KB的Luatown了。;)
https://stackoverflow.com/questions/10960101
复制相似问题