2017-02-02 27 views
1

我正在使用clojail库进行沙箱操作,但它的行为并不像预期的那样。Clojail不会在Clojure中抛出安全异常

下面是代码:

(ns jail.core 
    (:require [clojail.core :as s] 
      [clojail.testers :as t])) 

(def my-tester [(t/blacklist-objects [clojure.lang.RT]) 
       (t/blanket "clojail")]) 

(def sb (s/sandbox my-tester)) 

(println (sb '(do 
       (import clojure.lang.RT) 
       (RT/errPrintWriter)))) 

(import clojure.lang.RT)线有扔抛出:SecurityException但事实并非如此。

它返回PrintWriter(errPrintWriter)对象。

回答

0

事实证明,如果我不通过类对象到import宏,它只是工作,但我认为这种行为有点奇怪。

这里:

(println (sb '(do 
       clojure.lang.RT 
       (RT/errPrintWriter)))) 

现在我得到安全例外,在import宏以某种方式阻止clojail抛出安全例外