2016-03-02 38 views
2

我們正在研究一個功能,我們需要讓用戶編寫一個小R腳本來計算某些數據。執行不可信的RDotNet代碼

腳本應該是非常簡單的,如:

var1 + var2 - var3 

var1 + sum(var2) 

然而,R可以做的遠不止此,我們不希望任何人在我們的服務器上執行的東西。

我們嘗試過使用不同的AppDomain,但這個link似乎表明它仍然不被支持。

所以我們需要找到一些更有創意的方式來「保護」服務器。

我們想到的一個選擇是創建允許的函數的某種字典並預解析腳本以查找不允許的內容。

我的問題是:你會怎麼做? (前提是應用程序域是不是一種選擇)

+0

不知道這是否是評論或答案,我會堅持應用程序域,但通過不同的方式:您可能會嘗試在不同的應用程序域內運行您的應用程序。在這種情況下,R.net和R仍將用於單個域。如果我沒有弄錯,R進程本身會自動在與其父進程相同的域中啓動。進程間通信可以通過MCF命名管道來實現。 –

回答

0

就如關閉標記這個問題的緣故,這裏是我們所做的事情:

我們結束了使用Rserve

這是託管在一臺無法做任何事情的機器上,然後在機器/用戶級別而不是在此過程中管理安全性。