我想能夠運行不可信的ruby代碼。我希望能夠將變量傳遞給它可能使用的不可信代碼。我也想讓代碼將結果返回給我。這裏是一個概念性的例子,我在想什麼如何在安全沙箱內運行不受信任的Ruby代碼?
input = "sweet"
output = nil
Thread.start {
$SAFE = 4
#... untrusted code goes here, it uses the input variable(s)
#to calculate some result that it places in the output variable
}
#parse the output variable as a string.
只是爲了澄清,我基本上使用不受信任的代碼作爲函數。我想 提供它的一些輸入,然後讓它寫入輸出。這就是我真正想要的,我不在乎它是如何完成的,我只是希望能夠使用不可信的Ruby代碼作爲一種功能。該解決方案不必看起來像我上面寫的代碼,我只是用它來說明我想要的。
現在,我可以認爲目前的3種方法可以做到這一點:
- 使用$ SAFE級別的結構之上。
- whytheluckystiff有一個紅寶石沙盒插件
- 我可以在自己的虛擬機上運行每個功能,使用某種類型的os虛擬化軟件,如vmware或Xen等。
我想知道是否有人有任何建議運行不可信的Ruby代碼的功能方式?你會推薦什麼樣的選擇?你會怎麼做呢?謝謝。
有沒有人有任何解釋$ SAFE有問題的參考? – sheldonh 2011-12-19 15:28:52