2013-10-23 58 views
1

我從其他問題中看到我可以設置open_basedir來限制對父文件夾的訪問。但是,我決定做一些實驗來找出我可以做的事情。在PHP中限制對父目錄的訪問

第一個測試是看我是否可以使用ini_set函數手動設置open_basedir。值得慶幸的是,這個函數似乎可以設置一個更嚴格的basedir,但它不能用來減少限制。這很好。

但是我的下一個測試有點不安:

ini_set("open_basedir","/path/to/desired/root/limited"); 
echo file_get_contents("/some/outsite/file.txt"); // error: basedir restriction 
echo `cat /some/outside/file.txt`; // outputs the file 

我似乎無法找到任何方式限制的東西shell訪問。

所以我想我真正的問題是,我能做些什麼來確保父文件夾是安全的?顯然,open_basedir不會削減它。

+0

我不明白'echo'cat /some/outside/file.txt';'實際上是在php中打印文件,應該在物理上輸出'cat/some /不會影響open_basedir –

+3

shell的範圍不太可能在PHP中受到限制,你必須限制PHP運行的實際用戶,通常會阻塞'exec() '爲了完全安全的配置 –

+0

@MikeB Backticks。[L賺取大約'時間](http://php.net/manual/en/language.operators.execution.php) –

回答

1

open_basedir通常不會像那樣限制後門訪問。 PHP中有一個「safe_mode」,它阻止了像system()和exec()這樣的調用。全部列表在這裏:http://www.php.net/manual/en/features.safe-mode.functions.php

但是從PHP 5.3開始已被棄用,因爲它有很多方法。

你可以使用suPHP和chroot的,由另一StackOverflow的答案建議:PHP safemode alternative

「更好的辦法是使用suphp運行你的應用程序作爲監禁的用戶此使用操作系統保護的安全您應用程序,您將php代碼作爲無權訪問shell的帳戶運行,您可以從該用戶擁有的所有內容中刪除寫入權限chmod 500 -R /或者更進一步並在chroot中運行您的應用程序。

相關鏈接:

0

好吧,我懷疑你甚至不能達到這個單一的cPanel /的帳戶中。 其恐怖(你必須設置open_basedirallowOverridesafe_mode和所需的CGI/perl的/時鐘守護作業甚至其他限制......

你最好使用經銷商(WHM)交友帳戶或管理嚮導(cpanel替代)多用戶帳戶