5
我正在爲Rails項目實現插件架構。插件體系結構包括插件編寫者編寫要在服務器上執行的Ruby代碼的能力。我想使這個安全,以便插件編寫者沒有寫破壞性代碼的能力。在有限的環境中執行ruby代碼
我想我需要做的,儘管我打開其他選項,但是在具有有限範圍的隔離環境中爲插件執行Ruby代碼。我正在思考therubyracer gem的精神,但我想安全地執行Ruby而不是JavaScript。
我找不出一個好辦法做到這一點。我想用eval
與有限的bindings
對象,但我認爲這將是很難eval
幾個文件,我不認爲我可以充分限制綁定。例如,我不希望插件能夠在模型上執行類似destroy_all
的操作,或者在應用程序中使用猴子補丁存在的代碼。
我對這個很着迷。有人有主意嗎?
你可能有一些運氣這個問題:http://stackoverflow.com/questions/406833/language-in-a-sandbox-在護欄 – Earlz