2011-05-18 102 views
1

我需要製作一個網站,允許註冊用戶上傳音頻文件。 我不知道有沒有關於安全的防彈練習。 該網站建於PHP用PHP上傳音頻文件

+0

您擔心什麼樣的安全性?限制文件訪問,防止非法內容,DRM等的上傳? – Ryan 2011-05-18 17:02:39

回答

0

您可以上傳用PHP什麼。下面是一個示例:http://www.tizag.com/phpT/fileupload.php

關於安全性,您必須驗證是否只允許某些人上傳內容並驗證上傳內容(文件大小,文件類型等)。

2

您將要仔細檢查文件類型。這意味着而不是只是在文件名上做一個子字符串來獲得擴展名。該擴展並不是文件實際是什麼的具體指標。

正如Danzan說,你將要檢查的MIME類型的文件,使用像這樣的代碼:

if ($_FILES["audioUpload"]["type"] == "audio/mpeg") { 
//proceed with upload procedure 
} else { 
echo "Only mp3's are allowed to be uploaded."; 
} 

這減少了用戶上傳,比方說,惡意PHP代碼的機會到您的上傳目錄基本爲零。

1

防彈文件類型檢查是通過和getimagesize的組合提供,FileInfo的延伸和mime_content_type功能(Nette Framework屬性):

// $file is absolute path to the uploaded file 
$info = @getimagesize($file); // @ - files smaller than 12 bytes causes read error 
if (isset($info['mime'])) { 
    return $info['mime']; 
} elseif (extension_loaded('fileinfo')) { 
    $type = preg_replace('#[\s;].*$#', '', finfo_file(finfo_open(FILEINFO_MIME), $file)); 
} elseif (function_exists('mime_content_type')) { 
    $type = mime_content_type($file); 
} 
return isset($type) && preg_match('#^\S+/\S+$#', $type) 
    ? $type 
    : 'application/octet-stream'; 

你不能相信任何數據來自客戶端的,因爲他們可以很容易地僞造的。

+0

正是我在想用戶提交的數據。 我已經提交延期支票和MIME類型,但還是不知道這一切都需要防止注入的服務器 – dede 2011-05-18 20:43:07

+0

我認爲服務器是在這種情況下,安全(您無法運行音頻文件作爲PHP腳本)的惡意代碼,但是不可避免的問題仍然是用戶可以上傳包含惡意代碼的音頻文件,以防發現一些漏洞(這可能會對從服務器下載此文件的用戶造成危險)。但我認爲你不必擔心這一點。 – 2011-05-19 02:13:26

相關問題