我怎样才能用沙箱包装Clojure?

我怎样才能用沙箱包装Clojure?,clojure,Clojure,我正在编写一个应用程序,允许我的应用程序的用户使用Clojure进行扩展。Clojure通过应用程序中的网页输入并“evaled”运行。我的问题是如何对用户输入的代码进行沙箱处理,使其不会损坏任何东西或调用System.exit或类似的东西?您应该能够通过配置JDK级别来限制对代码的访问。看看RuntimePermission设置,例如,有一个直接设置禁止停止JVM(例如,System.exit)。有一个用于此的库。《Clojure IRC香奈儿》中的懒汉使用它。你可以在这里找到:不管怎样,cl

我正在编写一个应用程序,允许我的应用程序的用户使用Clojure进行扩展。Clojure通过应用程序中的网页输入并“evaled”运行。我的问题是如何对用户输入的代码进行沙箱处理,使其不会损坏任何东西或调用System.exit或类似的东西?

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

有一个用于此的库。《Clojure IRC香奈儿》中的懒汉使用它。你可以在这里找到:

不管怎样,clojure IRC机器人使用哪一种。另一个使用。这不再正确。在我们编写clojail之前,sexpbot正在使用clj沙箱。clojurebot从未使用过任何一个沙盒库,而是选择了一个自制的沙盒。更新了此答案以使其符合事实。