我是 Clojure 新手,正在尝试理解语言的某些安全方面。
在文档中,我了解到将 read-eval 绑定到unkown 应该拒绝代码执行。
但我在 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