我需要建立一个允许注册用户上传音频文件的网站。 我想知道有没有关于安全性的防弹练习。 该网站是用PHP构建的
答案 0 :(得分:2)
答案 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
关于安全性,您必须验证只允许某些人上传内容,并验证他们上传内容的内容(文件大小,文件类型等)。