【发布时间】:2021-07-13 22:11:22
【问题描述】:
我想在将文件上传到我们的网站之前检测用户是否恶意更改了文件的扩展名。
我们使用的是 ASP.NET Core 3.1
系统应该只允许上传某些文件类型。例如,用户在上传前将 .exe 重命名为 .pdf,站点应该能够检测并抛出错误。
IFormFile ContentType 不起作用,因为它没有检测到原始文件扩展名。
还有其他方法吗?以某种方式检测文件的原始 Mimetype?
谢谢
【问题讨论】:
-
不能依赖文件扩展名;您必须检查文件签名或魔术字节。
-
我认为这不可行。多年来,我一直在 Facebook 上使用 .7z 或 .zip 扩展名绕过它。您可以查看文件中的一些元数据来检查它的真实情况,但覆盖所有可能的扩展名是不可撤销的。
-
您要求网络服务器猜测远程计算机上的用户在上传文件前 2 天可能做了什么。这不可能。您只是不能依赖扩展来阻止文件类型。使用
ContentType检查浏览器认为的实际文件类型实际上要安全得多。最后,您必须检查文件的标题/幻数
标签: .net asp.net-core mime-types