【问题标题】:Check file type after upload上传后检查文件类型
【发布时间】:2012-01-29 18:54:37
【问题描述】:

我正在使用可用的普通上传 API 将文件上传到服务器。现在我想检查上传的文件是否是有效文件。

我可以在页面上有多个文件上传框。有不同的要求,应该接受不同类型的文件。

说:

Input file 1 should take just exe
Input file 2 should take just html
Input file 3 should take just pptx

我可以检查扩展名并检查是一种解决方案,但可能会发生一些人可能会伪造扩展名并上传 txt 文件而不是 exe 等等

那么我如何检查是否使用 Java 上传了正确类型的文件

有一些 solution 用于相同的东西,但我不确定如何去做。

【问题讨论】:

  • 您使用的是哪个 API?
  • 我正在使用 commons-fileupload
  • 我将尝试关闭这个问题,因为需要详细信息 - 目前太模糊无法回答。

标签: java file-upload


【解决方案1】:

尝试使用适当的方法加载每个文件。比如尝试解析html文件,尝试加载带有POI的pptx文件。但它不适用于 exe。

【讨论】:

    【解决方案2】:

    对于commons-fileupload API,可以获取如下内容类型:

    FileItem file; 
    String contentType = file.getContentType();
    

    基于此,您可以提供一些if-else 来实现您的逻辑。 FileItem 可能是DefaultFileItem

    【讨论】:

    • 这对伪造文件没有帮助我可以将exe文件的扩展名更改为jpg并上传,它会给出文件类型为image
    【解决方案3】:

    检查扩展名后,还需要检查文件的签名。这通常位于文件的前几个字节中。要获得一个好的列表,请参考http://www.garykessler.net/library/file_sigs.html,因为它包含相当多的文件及其签名。

    当然,即使这也不是万无一失的,但它与您在不深入研究启发式方法的情况下所获得的一样接近。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-04
      • 1970-01-01
      • 2021-01-01
      • 2011-08-06
      • 2014-02-20
      • 1970-01-01
      相关资源
      最近更新 更多