2011-05-18 57 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