在使用JavaScript验证上传的文件是否为音频、视频或图像类型时,依靠MIME类型是否可行?

4
我知道从安全角度来看,这并不安全。但是为了方便起见,我打算使用javascript代码。因此,这只是第一步。 我的目标是避免任何错误报警,即如果恶意黑客操纵文件以符合我接受的mime类型,则没有问题(因为我将在服务器端进行第二次检查),但我希望防止将合法文件检测为有问题。
更新
工作解决方案的原型http://jsfiddle.net/tankchintan/5EUjE/1/
1个回答

1

只要在服务器端确认类型就可以了。

在客户端使用它只是为最终用户提供方便。您如何确定MIME类型?如果仅基于扩展名,则最好在客户端检查有效的扩展名。

更新

看起来只是将扩展名映射到文件类型,因为将png重命名为mp3时,代码会将其视为mpeg/audio

因此,请确保通过检查文件内容而不是扩展名来验证服务器上的类型。


我正在使用JavaScript确定MIME类型以访问正在上传的文件,然后使用对象的“type”属性。有点像FieldName.files.0.type。因此,我正在验证该值是否包含“video”或“audio”。 - Chantz
1
@Chantz 很有趣,我以前从未见过这种方法。你能展示一些代码吗? - Pekka
@Chantz 很好,谢谢!文件上传有“类型”属性?我不知道。 - Pekka
@Chantz 非常有趣。然而,我将一个 png 文件重命名为 mp3 并且它通过了。也许它在内部只是将扩展名映射到 MIME 类型。 - alex
@alex,是的,这就是我不确定的地方。但既然这是第一次尝试和一个方便的GUI,我认为只要它不给出错误的结果,它就可以做到。 - Chantz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接