2015-12-24 131 views
1

的MIME類型也被選中,但因爲這是可以被欺騙,這是額外的簡單片段足夠用於檢查上傳文件的有效性?這個基本的文件上傳檢查足夠安全嗎?

$safe_to_move = false; 

$ext = array("pdf", "doc", "docx", "xls", "xlsx"); 
if (in_array(preg_replace('/.*\./', '', strtolower($_FILES['file']['name'])), $ext)) { 
    $safe_to_move = true; 
} 

if (!is_uploaded_file($_FILES['file']['tmp_name'])) { 
    $safe_to_move = false; 
} 
+1

在某些情況下是的,在其他下,沒有。 –

+1

是的,它真的取決於你的意思是「足夠安全」。如果您的意思是「足夠安全以防止其他文件類型上傳」,那麼是的。 – Spooler

+0

在這一天結束時,你真的不能確認文件是什麼,你認爲它是不知道內部文件格式和檢查等... –

回答

1

你所做的事是一個堅實的方法,但它的安全程度更多地取決於您的服務器環境是如何設置的。

本文提供了一些相當不錯的洞察你問什麼,一切我在說會或多或少是它的一個引用。 http://resources.infosecinstitute.com/file-upload-vulnerabilities/

你肯定完成創建白名單,但...正確的事情

最重要的事情是保持在一個位置上載的文件無法雖然 Internet訪問。這可以通過將上傳的文件存儲在Web根目錄之外或將Web服務器配置爲拒絕對上載目錄的訪問來完成。

還有其他的事情可以做,以提高安全性,我完全建議你看看鏈接文章的解決方案部分,但確保這些文件存儲方式,他們不能輕鬆訪問「關閉網站「使它更難以在外部運行(顯然)。

Tl; Dr 你所做的是一個很好的第一步,如果你的服務器環境設置正確,它應該是足夠的。

+0

感謝您的鏈接的文章,就做成了一個有趣的閱讀 – andrew

+0

不是一個問題,我總是喜歡嘗試並找到了堅實的來源,當我回答的問題:)。希望它有幫助! – Spooler