2013-07-28 21 views
2

我正在研究一個以Ruby代碼作爲輸入並執行它的Rails應用程序。由於提交的代碼來自不受信任的域,因此我想限制對某些方法和模塊的訪問。例如,我不希望用戶訪問File.readopen()在Rails中限制對用戶提交的代碼的訪問

另外,是否可以限制只有幾個模塊的訪問?用戶提交的代碼只需要白名單中的模塊。

我可以對用戶代碼進行驗證,但我想檢查ruby語言或任何模塊是否已具備此功能。

Codeschool.com有互動式教程。我想知道,如果他們限制訪問用戶代碼或做任何驗證。

回答

2

我一直使用shikashi滿意這種任務。

+0

這看起來很有希望,但我使用的版本(0.5.2)是非常錯誤的。一些例子沒有工作[鏈接](https://github.com/tario/shikashi/blob/master/examples/basic/example2.rb)。 –

3

紅寶石有一個內置的功能爲,$SAFE

一些基本的介紹,你可以在這裏找到http://edwinmeyer.com/Release_Integrated_RHG_09_10_2008/chapter07.html ,然後就可以輕鬆谷歌更多的(我只推薦書)

也可參加一起來看看這裏 http://www.ruby-doc.org/docs/ProgrammingRuby/html/taint.html

從我這裏要記住的解決方案是加載您的應用程序,然後在一個線程中提高$SAFE水平4,有執行代碼(這不能降低以後,所以你首先需要一個低軌加載在0級)