2011-05-19 92 views
0

默認情況下,服務器上可用的許多文件夾,如「public_html」,「public_ftp」或簡單的根,哪一個是最好的安全地上傳和存儲用戶的圖像,我也可以添加一個鏈接到MySQL數據庫?什麼是服務器上傳圖片的最佳位置?

+0

忘記詢問存儲限制。如果我有無限的空間是爲所有文件夾或它只適用於FTP?謝謝 – Kourosh 2011-05-19 12:00:50

回答

1

如果您的客戶通過http表單上傳圖片,請將其存儲在public_html中,如果他們需要從網頁訪問它。

0

文檔根目錄內的任何文件夾都可以。如果你希望它是安全的,請確保您的腳本只接受允許的文件類型,並作爲另一項措施,把一個.htaccess文件,該文件夾內:

<FilesMatch "*.php"> 
    SetHandler None 
</FilesMatch> 

這將確保該目錄內執行任何獲取的。

1

,我建議你將文件保存在某處「的public_html」,並創建以下文件,以限制公衆獲取:

文件:上傳/的.htaccess

deny from all 

在你的PHP腳本,你可以發送這些文件僅限於有權訪問的用戶。

1

在我看來,將其存儲在之外的的公共htdocs文件夾中。這是因爲如果有人設法上載圖像文件以外的任何東西(比如邪惡的PHP腳本),他們將無法調用它(並且不會運行)。

如果你的public_html文件夾是說/path/to/website/public_html我把它們存儲在/path/to/website/uploaded_images

此外,請確保您進行驗證,以便它使用允許的圖片名稱(比如只允許的白名單。 JPG,.gif和巴紐)

編輯: 您還需要創建打開圖像文件,並通過回給用戶

+0

然後,上傳的圖像也將不可用。 – 2011-05-19 11:57:35

+0

我忘了提及創建一個腳本來傳遞圖片,編輯我的帖子 – fin1te 2011-05-19 11:58:53

+0

然後使用腳本顯示圖片。 – Prikkeldraad 2011-05-19 11:59:46

1

安全的定義是通過一個腳本。

如果您想要在網站上顯示這些圖像,顯然這將是public_html中的一個文件夾,除非您想使用向用戶呈現圖像的腳本,可能會即時更改圖像,更改緩存標頭等。然後,您可以將該文件夾移到docroot之外的任何位置,腳本將可以訪問這些文件。

就我個人而言,我將用戶圖像,文件和docroot中的所有內容保存在.htaccess的保護下,並通過處理用戶權限的腳本進行訪問(如有必要)。這些文件位於/uploaded文件夾中,子文件夾深度最多可達2層,每個「層」最多可存儲1024個文件/文件。文件僅由它們的ID命名,沒有任何擴展名,所有文件信息都存儲在數據庫中。花了一些時間來實現,但幸好這是一個可重用的代碼。

相關問題