Clojail 不会在 Clojure 中抛出安全异常

Clojail does not throw Security Exception in Clojure

我正在使用 clojail 库进行沙盒处理,但它的行为与预期不符。

代码如下:

(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 但它没有。

它returns PrintWriter(errPrintWriter)对象。

事实证明,如果我不将 class 对象传递给 import 宏,它就可以正常工作,但我认为这种行为有点奇怪。

这里:

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

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