2012-09-25 129 views
3

我的方案:我有一個運行Apache的共享主機帳戶,用於個人項目。現在我的一位朋友需要一點空間爲他的曲棍球俱樂部建立一個網站。我決定讓他在我的帳戶上運行它,並給他一個FTP帳戶,以限制他訪問public_html /曲棍球。限制PHP的文件系統訪問文件夾

我的問題:有沒有辦法限制他的PHP腳本(在他的曲棍球文件夾中),使他們無法訪問曲棍球文件夾之外的任何文件?我正在尋找一種解決方案,其中包含像php.ini或.htaccess中的配置。請不要回復告訴我他應該儘量不要訪問該文件夾以外的任何內容。我試圖提高安全性,防止他的代碼中的有意訪問和意外安全漏洞。

如果你知道如何在沙箱環境中運行他的內容,那麼任何有建設性的輸入都將不勝感激。

謝謝,西蒙

回答

2

可以使用open_basedir配置設置來限制PHP的範圍。例如,要設置open_basedir每個目錄中httpd.conf你會寫

<Directory /var/www/public_html/hockey> 
    php_admin_value open_basedir "/var/www/public_html/hockey" 
</Directory> 
+0

這正是我一直在尋找的,謝謝! – usimon

+0

文檔:http://php.net/manual/en/ini.core.php#ini.open-basedir – fooquency

+0

@fooquency:那個鏈接已經在那裏:) – Jon

0

這是完美的。我得到它會在5.6消失,但5.3.x仍然會是流行了很長的時間讓說實話..太多的託管服務提供商通過打破他們客戶的網站而擔心失去業務......我曾與之合作過的幾個客戶仍然在PHP 4.x上運行..這是極端被忽視的..

他們確實迫使他們中的一些人達到5.2 ..他們在推進之前很久就已經過時了......但事實仍然是,你不能僅僅將你的整個客戶羣推到一個新版本中。他們大多數不是開發人員d它花費他們的錢,並且如果他們因爲你強制它而取消,它會轉化爲損失。

我已經通過嘗試隔離我們系統上的共享帳戶..這就是爲什麼這是有用的..我想鎖定5.3-5.5的用戶最好的我可以..所以我使用php-fcgi .. suexec ..等..所以在他們的虛擬主機執行這個指令似乎是下一個最好的隔離級別!

我在我的虛擬實驗室測試了它,它似乎正是我想要的。它使人們無法從/ etc中找到glob()文件,並找到我們的passwd文件以及其他虛擬主機他們可能想要蠻力...

0

不!

你不能(99%)以相同的CPANEL /賬戶實現這一目標。 open_basedirallowOverridesafe_mode甚至還不夠! cgi/perl/cron-jobs仍然未受保護!

您最好使用經銷商(WHM)Cpanel帳戶或DirectAdmin(cpanel備選)多用戶帳戶。