我有一個允許上傳大多數文件類型的上傳表單。 在這裏,他們是:PHP安全文件上傳
- 圖片:JPG/JPEG/PNG/GIF ...
- 視頻:MP4/AVI/WMV ...
- 另一個文件:DOC/PDF/RAR/ZIP/mp3/...
對於圖像文件,我知道我可以使用PHP函數getimagesize()或其他東西來確保它是真實的圖像。但其他文件如視頻和文檔如何?這是一個真正的文件,沒有僞造擴展名?
如何做到這一點?
謝謝!我需要你的幫助。
我有一個允許上傳大多數文件類型的上傳表單。 在這裏,他們是:PHP安全文件上傳
對於圖像文件,我知道我可以使用PHP函數getimagesize()或其他東西來確保它是真實的圖像。但其他文件如視頻和文檔如何?這是一個真正的文件,沒有僞造擴展名?
如何做到這一點?
謝謝!我需要你的幫助。
每一個文件都有它自己的類型,稱爲MIME類型,以便ü可以檢查MIME類型,做這樣的一些東西:
if (mime_content_type($FILES['file']['tmp'])== "image/png"))
{
// do upload
}else{
die('file type not supported');}
ü可以把所有的MIME類型到一個數組檢查與in_array功能 類型u能找到所有的MIME類型在這裏:http://www.freeformatter.com/mime-types-list.html
任何客戶端檢查(甚至是瀏覽器的MIME類型檢測),是註定要失敗,因爲用戶可以訪問它。您最好讓上傳開始並完成,然後執行嚴重的服務器端檢查。如果這不符合您的預期,您只需放棄該文件即可。
在服務器端的頂部檢查,你當然可以實現客戶端檢查只是一個整潔的用戶體驗
充分確保文件上傳的唯一方法就是嘗試用PHP解析上傳的文件或其他一些需要特定有效文件類型的擴展/工具。換句話說:
從查看getID3擴展,這可能是最好的選擇,因爲它似乎是解析各種各樣的內容類型。
在任何情況下,您基本上需要的是PHP或其他第三方庫/擴展程序來確定文件的二進制數據與其MIME內容類型相對應。
希望這有助於:)
看到這樣的回答:http://stackoverflow.com/q/134833/467164 –