2011-03-10 67 views
7

我正在编写一个应用程序,允许我的应用程序用户使用Clojure对其进行扩展。 Clojure通过应用程序中的网页输入并“逃避”运行。我的问题是我怎么能沙箱这个代码输入的用户,以便它不会破坏任何东西或调用System.exit或类似的东西?我如何使用沙盒Clojure?

回答

3

您应该能够通过配置JDK级别permissions来限制对代码的访问。查看RuntimePermission设置,例如有一个禁止停止JVM的直接设置(例如System.exit)。

17

有一个库。 Clojure IRC chanel中的lazybot使用它。你可以在这里找到它:https://github.com/flatland/clojail

+2

无论如何,#clojure IRC机器人使用哪一个。另一个使用[clojail](https://github.com/Raynes/clojail)。 – amalloy 2011-03-10 15:33:24

+0

这不再正确。在我们写clojail之前,sexpbot使用了clj-sandbox。 clojurebot从未使用任何一个沙箱库,选择一个自制的沙箱。 – Rayne 2011-03-28 14:31:41

+0

更新了此答案以使其具有实际意义。 – Rayne 2011-10-26 09:24:01