我是 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