Laravel验证将mp3和mp4误解为bin或application / octet-stream

时间:2016-03-04 20:09:28

标签: php apache laravel-5

在工作中我们使用的是Laravel 5,我们即将完成一个项目。在上周,我们突然遇到了一个网站破坏问题。我们正在开发的网站允许用户将各种文件类型上传到网站,然后在S3上进行操作和存储。

在这些文件类型中; JPG,PDF和其他几个正在工作。每当提交带有MP3的请求时,请求都会被拒绝,因为Laravel(或者PHP或Apache)会将其检测为二进制或八位字节。我通过返回getMimeType()输出验证了这一点,并通过简单地删除或添加mime验证规则来验证这是失败点。

让二进制文件通过似乎是一个巨大的安全风险,但同时这也是项目的一个关键特性。这个问题仅在上周的最后一个问题中出现,并且git中没有代码更改,表明有关验证的内容已发生变化。

如何让MP3 / MP4文件通过验证而不让二进制文件进入?

1 个答案:

答案 0 :(得分:0)

Laravel的getMimeType()建立在原生mime_content_type()方法之上,无法检测某些mp3文件。

最好的办法是使用像one这样的自定义MIME检测器来完成这项工作。