/ / Wie sandbox clojure.string / leer? mit Clojail in Clojure? - Java, Clojure, Lisp, Sandkasten, Clojurescript

Wie sandbox clojure.string / leer? mit Clojail in Clojure? - Java, Clojure, Lisp, Sandkasten, Clojurescript

ich benutze Clojail für Sandboxing und es funktioniert super für clojure.core Funktionen, aber wenn es zu anderen Namespaces kommt, funktioniert es nicht wie erwartet.

Ich muss Sandbox (beschränken) clojure.string/blank? Funktion.

(defn blacklist-symbols
[]
(testers/blacklist-symbols
"#{alter-var-root
intern
eval
clojure.string/blank?
...}))

Dies sollte ein werfen Sicherheitsaußnahme aber das tut es nicht.

(sb "(do
(println "Hey: " (clojure.string/blank? ""))))

Antworten:

0 für die Antwort № 1

es sollte so aussehen, wenn ich richtig verstehe,

(defn blacklist-symbols
[]
(testers/blacklist-symbols
#{"alter-var-root
"intern
"eval
"clojure.string/blank?
...}))

ein vollständig getestetes Beispiel

user=> (ns my.project
#_=>   (:use [clojail.core :only [sandbox]]
#_=>         [clojail.testers :only [blacklist-symbols blacklist-objects]]))
nil
my.project=>

my.project=> (def tester [(blacklist-symbols #{"alter-var-root "clojure.string/blank?})
#_=>              (blacklist-objects [java.lang.Thread])]) ; Create a blacklist.
#"my.project/tester
my.project=> (def sb (sandbox tester :timeout 5000))
#"my.project/sb
my.project=>

my.project=> (sb "(println (clojure.string/blank? "")))

AccessControlException access denied ("java.lang.RuntimePermission" "createClassLoader")  java.security.AccessControlContext.checkPermission (AccessControlContext.java:457)

Sie finden das Beispiel auf der Homepage der Bibliothek https://github.com/Raynes/clojail