即使重命名其扩展名,也阻止上传 exe

Posted

技术标签:

【中文标题】即使重命名其扩展名,也阻止上传 exe【英文标题】:Prevent an exe from being uploaded even after renaming its extention 【发布时间】:2014-09-21 18:17:57 【问题描述】:

我正在使用 c# 开发 asp.net。

我的表单中有一个文件上传控件。一切正常。

问题是.exe 文件可以通过重命名来上传。我也想限制大小。

【问题讨论】:

也许this question 可以帮忙? 我已经更新了我的答案。让我知道它是否对您有帮助 【参考方案1】:

在您的情况下,最好的方法是检查文件的第一个字节以确定它们是什么。

您应该使用FindMimeFromData function 根据提供的数据确定 MIME 类型。

查看this文件签名表

this 的 SO 回答向您展示了如何在不使用扩展名的情况下获取 mime 类型。

Here 有一个包含文件签名列表的表格

exe 文件具有十六进制签名 4D 5A(在 ASCII 表示中,0x5A4DMZ

从这一点我们可以做这个功能

    public static bool IsExecutable(string filePath)
                
      var firstBytes = new byte[2];
      using (var fileStream = File.Open(filePath, FileMode.Open))
      
          fileStream.Read(firstBytes, 0, 2);
      
      return Encoding.UTF8.GetString(firstBytes) == "MZ";
    

【讨论】:

以上是关于即使重命名其扩展名,也阻止上传 exe的主要内容,如果未能解决你的问题,请参考以下文章

如何在反应中上传时检查受限制的文件

wordpress上传图片时重命名--修改插件时遇到的一些问题

将(年份)保存在重命名文件夹中

如何在gmail中下载包含.exe文件的.rar文件(附件)

DVWA 黑客攻防实战文件上传漏洞 File Upload

在 sed 的帮助下重命名具有 2 个扩展名的文件系列