执行我目前正在写一个接受一系列Clojure的形式和他们进行评估时,结果得到的列表防止未经授权的代码
返回因此,例如输入将是一个应用程序
(data "abc" :identifier)
(data "gee" :identifier)
(content "def" :identifier [1 2 3 4 5])
后端的功能基本上只是把它们变成Clojure地图,例如
(defn data [text id]
{:text text :id id})
(defn content [text id cont]
{:text text :id id :cont cont})
麻烦的是,我在处理此刻的代码的方式是通过接受输入与(-> input read-string eval)
,并相应地获得内容。这是不好的,因为任何人都可以将狡猾的(System/exit 1)
附加到输入并关闭JVM
有什么方法可以将可以在此步骤中执行的Clojure表单“列入白名单”并将所有讨厌的内容列入黑名单?或者我太过于天真地使用Clojure表单作为数据输入机制?
神圣鲍比桌子!可能有这样的机制,但你需要权衡他们的潜在风险。 – user100464 2012-03-03 01:57:26