$finfo = finfo_open( FILEINFO_MIME );
$mimetype = finfo_file( $finfo , $this->fileInfo['tmp_name'] );
if ( $mimetype == "audio/mpeg; charset=binary" )
{
return TRUE;
}
else
{
$this->error = "请上传合法文件";
return FALSE;
}
为什么有些mp3文件的$mimetype是application/octet-stream; charset=binary,有些是audio/mpeg; charset=binary
application/octet-stream; charset=binary是否安全,或者怎样进一步验证上传的文件是安全的音频文件?
以前,我用 python 写了一个上传文件的白名单,利用白名单内设置的16进制的头,进行比对。希望能给你一个参考。
看看github上面有没有第三方库?
是可以找下对应格式的文件的是对应的头信息(比如 图片文件一般都会在前2个字节标识出其格式 [需要分析读取二进制数据] ),但即使这样仍然不能确保安全,因为即使是二进制数据也可能会被伪造。
参考下 https://segmentfault.com/q/10...