2012-10-01 65 views
1

網站和其他Web服務(如Google App Engine或WordPress等)如何安全地允許用戶上傳任何他們想要的代碼,而無需定期對用戶代碼進行破壞?我正在開發一個基本上使用Python中更復雜的'Eval()'實現的項目來執行用戶上傳的代碼。我正試圖安全地做到這一點,而不是託管代碼,而是讓開發人員託管代碼,我可以像訪問api一樣訪問它?或者可能必須批准這一切(就像他們在應用程序商店做的一樣)。網站如何安全地託管和執行用戶代碼

無論如何,只是爲了更改,如何安全地託管和執行用戶上傳的代碼?

+4

這個問題的答案是廣泛的:它基本上是使用虛擬和監獄環境的混合物。 –

+0

hmm ... http://stackoverflow.com/search?q=%5Bpython%5D+sandbox – defuz

+0

你看過這個項目嗎? https://github.com/haypo/pysandbox – defuz

回答

0

Pythoninteråreter過去曾將沙箱作爲功能目標。但是,它不適用於Python。

東西剩下的就是RestrictedPython(每部署在Plone站點在那裏):

http://pypi.python.org/pypi/RestrictedPython

它基本上是一個執行前修改的Python AST一個eval()。對於少數線腳本很有用,對實際應用程序開發沒有用處。

但是,如果我是你,我不會嘗試在虛擬機級別上創建沙盒。相反,我會創建jailed/chrooted UNIX進程,這些進程對所有內容(磁盤,網絡等)都具有隻讀訪問權限,並且執行時間過長會導致查殺超時。這幾乎是App Engine的功能。