我是Clojure的新手,正在尝试理解该语言的一些安全特性。
在文档中,我了解到将read-eval绑定到未知应该会拒绝代码执行。
但是,在clojure.core/read-string中尝试代码时,clojure.tools.reader/read-string会正确地调用。
我还看到reader.edn不会调用代码,但我想确认即使我们的开发者不小心使用了clojure.tools.reader,也不会执行任何代码。
谢谢,Rotem
原型
(binding [*read-eval* :unknown]
(clojure.tools.reader/read-string "#=(* 2 21)"))
=> 42