2011-03-10 7 views
7

Estoy escribiendo una aplicación que permite a los usuarios de mi aplicación extenderla usando Clojure. El Clojure se ingresa a través de una página web en la aplicación y "evadido" para ejecutarse. Mi pregunta es ¿cómo puedo guardar este código ingresado por los usuarios para que no corrompa nada o llamar a System.exit o algo así?¿Cómo puedo sandbox Clojure?

Respuesta

3

Debería poder restringir el acceso al código configurando el nivel JDK permissions. Eche un vistazo a la configuración de RuntimePermission, por ejemplo, hay una configuración directa para inhibir detener la JVM (por ejemplo, System.exit).

17

Hay una biblioteca para eso. lazybot en Clojure IRC chanel lo usa. Puede encontrarlo aquí: https://github.com/flatland/clojail

+2

Cuál de los bots IRC#clojure usa, de todos modos. El otro usa [clojail] (https://github.com/Raynes/clojail). – amalloy

+0

Esto ya no es correcto. sexpbot estaba usando clj-sandbox antes de escribir clojail. clojurebot nunca usó ninguna de las bibliotecas de sandboxing, optando por un arenero hecho en casa. – Rayne

+0

Se actualizó esta respuesta para que sea objetiva. – Rayne

Cuestiones relacionadas