使用PHP上传音频文件

时间:2011-05-18 17:01:12

标签: php file-upload

我需要建立一个允许注册用户上传音频文件的网站。 我想知道有没有关于安全性的防弹练习。 该网站是用PHP构建的

4 个答案:

答案 0 :(得分:2)

检查mime类型的上传文件

mp3 -> audio/mpeg

更多信息:http://www.w3schools.com/media/media_mimeref.asp

答案 1 :(得分:2)

您需要仔细检查文件类型。这意味着只是在文件名上执行子字符串以获取扩展名。扩展名不是文件实际内容的具体指示。

正如Danzan所说,您需要使用以下代码检查文件的MIME类型:

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

这降低了用户将恶意PHP代码上传到您的上传目录的几率基本为零的可能性。

答案 2 :(得分: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';

您无法信任来自客户端的任何数据,因为它们很容易被伪造。

答案 3 :(得分:0)

您可以使用PHP上传任何内容。这是一个例子:http://www.tizag.com/phpT/fileupload.php

关于安全性,您必须验证只允许某些人上传内容,并验证他们上传内容的内容(文件大小,文件类型等)。