2012-11-20 56 views
0

我們都知道chmod 777不是讓我們的上傳腳本正常工作的最佳方式。所以我在想什麼是使用它時最好的解決方案。上傳文件夾安全解決方案

我認爲用戶上傳文件「picture.jpg」的時候,我可以將其重命名爲「MD5(用戶名畫面-1.JPG)」,並顯示出它的網頁上爲<img src="files.php?img=username-picture-1.jpg">

然後在此files.php文件看起來像

<?php 
    $file = md5($_GET['img']); 

    header('Content-Type: image/jpeg'); 
    header('Content-Length: ' . filesize($file)); 
    echo file_get_contents($file); 
?> 

這樣,用戶就不會知道他已經上傳的文件的文件名,這麼說,他將無法執行它。我對嗎?

而且我想我會有一些其他檢查來處理像MIME類型和其他東西的上傳。我只想知道這是否會阻止用戶執行他上傳的文件。

+0

這是一種令人討厭的問題,以便弄清楚請求了哪個文件。但是大多數代碼是開源的,所以你不能依靠默默無聞的安全性。 還有另一個人喜歡Facebook的原因不這樣做。您已將您的網站轉換爲每頁1個PHP執行1個(每頁1個)。在一個畫廊可能是30倍的交通。 你不應該需要運行'chmod 777'無論如何,該文件應僅是網絡服務器爲運行(這不應該是root)用戶是可執行的。 –

+0

這怎麼可能完成?我沒有ssh訪問權限! –

回答

1

你可以.htaccess文件只需添加到包含上傳的文件,以防止執行中的文件夾,但我認爲這是一個更好的辦法,你存儲永久之前,他們檢查上傳文件的MIME類型/文件擴展名在文件系統上

+0

您的意思是像<文件^(*。jpeg | * .jpg)>命令否決允許全部拒絕? –

+0

不 - 要阻止訪問完整的目錄 - 所以你必須把即你.htaccess文件/文件夾上傳與'從all'否認,因爲它的內容 – Philipp

+0

通過這樣做,我仍然能夠展現與在頁面上的圖像? –

相關問題