2011-03-06 65 views
2

我正在進行一個思考實驗,根據其他問題來判斷,畢竟不是那麼新穎,但我想我會繼續。我希望通過將用戶提供的服務器端腳本限制爲虛擬文件系統並設置根目錄,並將某些虛擬目錄進一步映射到特定的物理目錄,這與實際的目錄結構不一致。例如(使用PHP字符串解析),我的偏見是「〜$ user/...」,但語義較少的「/ $ user/...」也可以正常工作;可能會映射到「users/$ user/$ script_name/data/...」。是的,在某些情況下,多個用戶可能會受到腳本的影響。是否有任何可與PHP/Python /其他集成的沙盒腳本引擎?

由於這是一個思想實驗,因此我不考慮實現語言的問題,我期望在我的本地主機上執行它,寧願使用PHP而不是安裝其他東西。 (我也有Python 2可用,並且可以使用mod_wsgi來替代它,如果必須的話,我會安裝Python 3)。理想情況下,我希望PEAR模塊能夠做到這一點 - 但從我看不到的東西中可以看到。

我試過並未能找到一個服務器模塊,如SSJS,可以實現這一點。我發現的最接近的答案是< < Looking for a locked down script interpreter >>和< < Allowing users to script inline, what inline scripting engines are there for either .net or java? >>。如果我絕對需要的話,我會轉向Java或更不可能的單聲道,但我對這個想法並不熱心。 (我在Java上非常生疏,幾乎沒有使用它在服務器端,單聲道對我來說是完全陌生的。)

因爲它們是迄今爲止最有希望的選項,所以我也想知道沙盒設施在Java和Mono。例如,他們可以做虛擬文件系統嗎?從Java用戶代碼輸入API到引擎中?是否有任何標準API提供給腳本,如果可以的話,它們可以被刪除?

澄清 我真的不關心這個去哪個方向,但我其實期望的Java /單聲道是實現平臺,而不是沙盒一個,基於問題&答案我聯繫。我有點驚訝,看到翻轉的答案,但任何一種方式的作品。

+0

[PHP(pecl)](http://pecl.php.net/package/spidermonkey)和[Python]有一個spidermonkey擴展(http://pypi.python.org/pypi/python-蜘蛛猴);不知道他們提供多少禁閉。 – mario 2011-03-06 21:31:53

+0

我知道我看過PHP,不知道爲什麼我沒有檢查PECL。謝謝!我想我必須破解他們才能讓他們做我想做的事,但至少這是事情。 (你可能想做出這個答案而不僅僅是一個評論。) – Grault 2011-03-08 16:31:33

+0

http://niemeyer.net/lunatic-python – 2011-03-08 22:15:52

回答

1

Java沙箱(以爲瀏覽器applet實現的方式)根本不提供文件訪問。

通常,在大多數情況下,Java安全模型只對安全管理器「允許或不允許」做出決定。

當然,您可以設計另一個API而不是普通的File IO api(以及類似的),然後以這種方式訪問​​您的沙盒腳本(並且禁止安全管理器以正常方式訪問)。 (我猜想其中的一些已經在市場上的Java應用程序引擎中實現了,但我對此一無所知)。

+0

好的,這絕對是要搜索的東西。謝謝。 :) – Grault 2011-03-08 16:41:11

1

我從來沒有試圖真正沙箱單,但這可能給你一個起點:

http://www.mono-project.com/MonoSandbox

在沙箱中的文件系統訪問該鏈接觸及。

Mono scripting的熱門選項似乎是BooPython。這兩款產品都附帶最新版本的Mono(2.10)。 Visual Basic,RubyF#(OCaml-ish)也是如此。

Mono C# compiler可以很容易地嵌入作爲腳本服務。這是一個nice article about it

如果您不滿意PHP,那麼您應該查看Phalanger

還有很多其他的選擇。有一些新的基於.NET的腳本語言。我今天早些時候遇到了this one

+0

看起來很有希望!說實話,我並不在乎哪種語言是沙盒,所以如果我的想法能夠實現,Mono可以給用戶帶來靈活性。 – Grault 2011-03-08 16:36:08

+0

@Jesdisciple - 很高興幫助。不要害怕投票選出你喜歡的答案。 – Justin 2011-03-08 22:11:53