我有LAMP安裝在我的服務器,我使用虛擬主機映射域到子目錄。我需要允許我的客戶使用FTP上傳文件(包括php)到他們的服務器。避免用戶去../../
的問題是,使用xxx.com.br上傳的文件test.php的,並執行一個域中的客戶也喜歡:
xxx.com.br/test.php
測試的內容.php if file_put_contents(「../../ xxx.txt」,「teste」)和它的工作!文件xxx.txt在他的域名文件夾上創建了2個層級!我如何防止這種情況發生?
我有LAMP安裝在我的服務器,我使用虛擬主機映射域到子目錄。我需要允許我的客戶使用FTP上傳文件(包括php)到他們的服務器。避免用戶去../../
的問題是,使用xxx.com.br上傳的文件test.php的,並執行一個域中的客戶也喜歡:
xxx.com.br/test.php
測試的內容.php if file_put_contents(「../../ xxx.txt」,「teste」)和它的工作!文件xxx.txt在他的域名文件夾上創建了2個層級!我如何防止這種情況發生?
不要讓PHP進程訪問它不打算達到的目錄。
這就是整個權限系統的要點。
在Linux中,PHP通常以自己的用戶身份運行,只要確保用戶對任何不想公開的文件都沒有讀或寫權限即可。
這會保護服務器,但它不會阻止用戶(假設有多個客戶)訪問彼此的內容。 –
@ KarolyHorvath通常情況下,這是「安全的」,通過選擇高度隨機化,很難猜測的路徑到web根目錄。更安全的是將PHP用作(F)CGI可執行文件。它可以配置爲以擁有文檔根目錄的用戶身份運行。然後管理員必須確保用戶沒有文件訪問權限,除了它的文檔根目錄(和大多數系統上的'/ tmp') – hek2mgl
我很高興你已經將「secured」這個詞放在引號中; ...) –
這些是個別的apache虛擬主機嗎? – h2ooooooo
你可能會使用[open_basedir](http://www.php.net/manual/en/ini.core.php#ini.open-basedir)之類的東西來限制用戶只是他們的文件夾。但是,如果你允許htaccess文件,它可以被覆蓋。 –
您允許使用上傳任意文件,並將其放入您網站的文檔根目錄中?祝你好運**不**讓你的服務器完全被破壞... –