2013-10-04 72 views
0

我有一個php腳本,上傳圖片到服務器上的一個目錄。但是我看到一些評論提到圖像不應該上傳到根目錄以達到安全考慮。我不確定如果我上傳到目前正在上傳的目錄中可能會出現的安全漏洞。這裏是圖像存儲的路徑。的htdocs /圖像/ filenames.jpg。 A screenshot of my directory is shown so that it would be clear圖片上傳目錄安全

請以安全的方式告知我以何種方式存儲圖像。

+0

如果您將文件夾的chmod設置爲644並且使用時間戳重命名圖像,則應該沒問題 – JTC

+0

如果chmod設置爲644,則允許用戶將文件上載到此目錄,因爲這裏是http:// www。 draac.com/chmodchart.html這個詞將只能讀取。當多個用戶同時上傳時,是否會有重複的時間戳? – codeGEN

+0

它是基於某人可能上傳php文件或其他可執行文件的假設而增加的安全性。在webroot外部有一個上傳目錄會將這些文件放出或到達。 您可以在上傳過程中將目錄chmod改爲755,然後再設置回644。 – Daniel

回答

1

關於圖片上傳的安全問題已經有很多話題,但首先應該做的是目錄644的許可。接下來,需要注意名稱,如註釋中所建議的,時間戳是相當好的方法,但它必須與一些隨機生成的值(或使用包括毫秒的時間戳)結合使用,但是如果您需要將圖像有意義的名稱,您必須清理用戶提供的名稱,過濾掉空字節,目錄遍歷和其他危險字符(我將白名單和限制圖像名稱的長度,或隨機生成一個字符串)。

而不是把圖像放在web根目錄之外,我更喜歡使用.htaccessphp_flag engine off選項來關閉目錄中的任何php執行。除了使用PHP腳本來提供圖片(這是一種相當安全的方法,如果實施正確的話),將圖片放在網頁根目錄之外也會使其無法直接訪問,因此您將無法在<img>標記中使用它們。

最後,您要檢查是否正在上傳有效圖片,通常使用GD圖書館,特別是getimagesize,只有在上傳有效圖片時纔會返回圖片大小。

同時檢查此topic上的圖像上傳的安全性。

+0

目前我的所有圖片都在web根目錄下,如/htdocs/images/filename.png。我已經使用.htaccess文件用下面的命令 AddHandler的CGI腳本.PHP特等的.py的.jsp的.asp的.htm的.shtml .SH的CGI 選項-ExecCGI 將這個足以和也我再使用GD lib調整圖像大小並刪除用戶原始圖像。 – codeGEN