執行我目前正在寫一個接受一系列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