即使重命名其扩展名,也阻止上传 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的主要内容,如果未能解决你的问题,请参考以下文章