我正在進行一個思考實驗,根據其他問題來判斷,畢竟不是那麼新穎,但我想我會繼續。我希望通過將用戶提供的服務器端腳本限制爲虛擬文件系統並設置根目錄,並將某些虛擬目錄進一步映射到特定的物理目錄,這與實際的目錄結構不一致。例如(使用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 /單聲道是實現平臺,而不是沙盒一個,基於問題&答案我聯繫。我有點驚訝,看到翻轉的答案,但任何一種方式的作品。
[PHP(pecl)](http://pecl.php.net/package/spidermonkey)和[Python]有一個spidermonkey擴展(http://pypi.python.org/pypi/python-蜘蛛猴);不知道他們提供多少禁閉。 – mario 2011-03-06 21:31:53
我知道我看過PHP,不知道爲什麼我沒有檢查PECL。謝謝!我想我必須破解他們才能讓他們做我想做的事,但至少這是事情。 (你可能想做出這個答案而不僅僅是一個評論。) – Grault 2011-03-08 16:31:33
http://niemeyer.net/lunatic-python – 2011-03-08 22:15:52