【问题标题】:Verifying an uploaded File's content type using ASP.Net使用 ASP.Net 验证上传文件的内容类型
【发布时间】:2009-02-26 17:48:53
【问题描述】:

如何在不使用文件扩展名或使用 ASP.Net 的 mime 类型的情况下验证文件内容类型。

我不想使用 mime 类型,因为它似乎是由文件扩展名决定的。

【问题讨论】:

    标签: asp.net file


    【解决方案1】:

    您可以在 UrlMon.dll 中使用 FindMimeFromData() 函数(使用 pinvoke)。

    this page for an example和这个MSDN page for the documentation的函数。

    【讨论】:

      【解决方案2】:

      这实际上取决于文件类型。对于许多文件类型,您可以检查文件的标题,它通常在文件中的第一个 0 字符之前。我曾经有一些检查图片类型的代码,所以我可以在某个地方找到它。

      但是,有些文件类型没有这种形式的标题,例如 XML(是的,这是一个便宜的例子,但我很容易想到 ;->)。我相信所有图形类型都会有标题,其他二进制文件类型也是如此。

      正如 Andrew 所提到的,标题不是 100%。但是,如果文件“格式错误”,则不太可能是黑客攻击。更有可能是损坏的上传或损坏的文件的上传。

      【讨论】:

        【解决方案3】:

        没有通用的方法来验证文件是否属于给定的扩展类型。

        您可以创建格式白名单(png、jpg、zip 等)并检查文件头以确定它是否符合预期格式。

        即使这样也不是万无一失的,因为文件内容本身可能格式错误,只有在尝试加载文件时才会显现出来。

        【讨论】:

          猜你喜欢
          • 2012-07-31
          • 2014-01-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-29
          • 2016-01-25
          • 2013-12-14
          • 2016-01-18
          相关资源
          最近更新 更多