2010-03-24 63 views
1

我的Django網站允許用戶上傳圖片。它在Apache上運行。在Django中安全地上傳圖片?

文件通過FileUpload表單上傳。上傳文件的文件夾在Django項目之外,並受到保護as described here,即該文件夾具有755個權限,文件具有644個權限。

我現在想爲用戶提供圖像 - 但我需要安全地執行此操作,以便可執行腳本不會運行,因此用戶無法刪除目錄中的所有圖像。

我的問題是,如何以安全的方式向用戶提供上傳的圖像?我可以直接從該文件夾中以靜態媒體的形式安全地使用這些權限嗎?或者我應該將它們複製到另一個具有不同權限的目錄中,並從那裏提供它們?

我正在爲站點上的其他靜態媒體(/ media/css)提供獨立的靜態應用程序。

謝謝!

+0

請認真解釋你如何爲你的django應用程序和你的靜態文件提供服務。 – 2010-03-24 22:47:12

+0

已編輯解釋更多,請讓我知道任何其他信息,這將有所幫助。 – AP257 2010-03-25 11:09:06

回答

0

執行此操作的方法是將Web服務器配置爲以預期的名稱和正確的圖像內容類型提供文件。通過PIL/Pillow使用Django的ImageField進行某種級別的驗證,即上傳的文件是圖像。對於此目錄,禁用webserver功能,如自動生成目錄索引,自動執行文件系統中的所有操作,猜測MIME類型以及運行cgi腳本。