【问题标题】:How can I validate whether a file is actually the format it claims to be? [closed]如何验证文件是否真的是它声称的格式? [关闭]
【发布时间】:2011-08-12 00:43:59
【问题描述】:

我有一个应用程序需要支持上传 PDF、图片等内容文件。

确保我只获得我指定的文件类型而不获得其他文件(例如可执行文件)的最可靠方法是什么?我应该只看文件扩展名或内容类型,还是有更好的方法?

【问题讨论】:

  • 最适合什么目的?扩展可以伪造,内容类型也可以伪造......
  • 验证取决于您和您的应用程序的性质。可能是扩展名或文件大小,或者如果有必要,您可以在接受/存储在服务器上之前验证内容。
  • 它是为了用户和提供者之间的交流目的,可以包含pdf文档屏幕截图图像和类似的。我如何确定用户被禁止上传可执行文件和其他有问题的文件(其中许多我不知道)
  • 验证应该基于白名单而不是黑名单。我知道这不是您问题的完整答案,但在这种情况下,我认为我只能说。
  • 全部:请考虑将编辑作为关闭的替代方法。是的,这个问题写得不好,但这里显然 一个问题。可以回答并且已经回答了。

标签: .net security file-upload


【解决方案1】:

我之前回答过来自here 的类似问题。无论文件扩展名如何,前 2-3 个字符都会更明确地告诉您文件的类型。

【讨论】:

    【解决方案2】:

    我至少会遵循这个过程(尽管为了真正安全,您可能需要根据文件的性质做更多的事情)

    1) 检查适当的文件扩展名

    2) 检查文件的magic number

    3) 读取前 x 个字节(例如:可能是 1000 个字节)并查看它们是否与该类型的文件格式匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-09
      • 2019-02-10
      • 1970-01-01
      • 2014-08-20
      • 2021-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多