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 抛出 安全异常。
我正在使用 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 抛出 安全异常。