2011-03-10 64 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