2008-10-24 109 views
2

因此,我的小組試圖爲各種各樣的Web服務設置共享服務器環境。我認爲我們已經在制定disable_functionsdisable_classes網站廣php.iniphp_admin_value迫使每個應用程序中的httpd.conf 的PHP腳本open_basedir,和乘客的user switching爲Ruby腳本解決。解決Python的共享服務器安全問題

我們仍然需要爲python找到一些東西。 Passenger支持python,但不支持針對特定子目錄的每個應用程序安全性(在域級別全部或全部不安全)。

有什麼建議嗎? (如果之前的任何一個都沒有意義 - 我是那個應該設置python支持的人,而不是那個設置php或ruby支持的人,所以還是有一些「然後從我的角度出現一些神奇的步驟「。

回答

3

那麼,有一個系統叫做virtualenv,它允許你在一種安全的環境下運行Python,並且在運行中配置/加載/關閉這些環境。我對此不太瞭解,但你應該認真研究一下;這裏是它的網頁的描述(只是谷歌它,你會發現它):

被解決的基本問題是依賴和版本之一,間接權限。想象一下你有一個需要LibFoo版本1的應用程序,但是另一個應用程序需要版本2.你怎麼能使用這兩個應用程序?如果您將所有內容都安裝到/usr/lib/python2.4/site-packages(或任何平臺的標準位置),那麼很容易導致無意中升級不應升級的應用程序。

或者更一般地說,如果你想安裝一個應用程序並保留它,該怎麼辦?如果應用程序有效,其庫中的任何更改或這些庫的版本都可能會中斷應用程序。

另外,如果您無法將軟件包安裝到全局站點包目錄中,該怎麼辦?例如,在共享主機上。

在所有這些情況下,virtualenv可以幫助你。它創建了一個具有自己的安裝目錄的環境,該環境不會與其他虛擬環境共享庫(也可能不使用全局安裝的庫)。

+1

您在virtualenv環境中提到的'安全環境'只是代碼安全的。只需要注意在venv中運行的腳本使用正確的Python解釋器和庫,它並不強制在問題中提到的任何安全「策略」。 – 2010-05-12 15:38:51