我是 Clojure 的新手,正在尝试了解该语言的一些安全方面。
根据文档,我明白将 read-eval 绑定到 unknown 应该拒绝代码执行。
但是,我在 clojure.core/read-string 下试用代码时,它正常工作,使用 clojure.tools.reader/read-string 时也会调用。
我还看到 reader.edn 不会调用代码,但想确保即使我们的开发者不小心使用了 clojure.tools.reader,代码也不会执行。
先行感谢,Rotem
POC
(binding [*read-eval* :unknown]
(clojure.tools.reader/read-string "#=(* 2 21)"))
=> 42