2017-02-07 23 views
2

Я использую Clojail для песочницы, и он отлично работает для функций clojure.core, но когда дело доходит до других пространств имен, это не работает должным образом.Как песочница clojure.string/blank? с Clojail в Clojure?

Мне нужна песочница (ограничение) clojure.string/blank? функция.

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

Это должно бросить исключение безопасности, но это не так.

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

Что означает «не работает» в этом контексте? Вы получили сообщение об ошибке? Если так, то, что это? – nhouser9

+0

@ nhouser9 обновленный вопрос. –

ответ

0

он должен выглядеть, если я правильно понимаю,

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

полностью протестирован пример

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) 

Вы можете найти пример в библиотеке домашней странице https://github.com/Raynes/clojail

+0

'# {alter-var-root intern eval clojure.string/blank? ...} и # {'alter-var-root ' intern 'eval ' clojure.string/blank? ...} - это то же самое. Вы можете поставить апостроф перед декларацией коллекции. –

+0

Это не работает. Получите тот же результат. Как вы пришли к такому результату? –

+0

https://gist.github.com/zerg000000/315fb89c2c6694210734d55115dadab6 –

 Смежные вопросы

  • Нет связанных вопросов^_^