【问题标题】:Django - UploadedFile.content_type checks the header of the file uploaded or just the extension?Django - UploadedFile.content_type 检查上传文件的标题或只是扩展名?
【发布时间】:2013-07-22 02:35:17
【问题描述】:

我从以下 django 文档中阅读

UploadedFile.content_type

与 文件(例如 text/plain 或 application/pdf)。像任何提供的数据一样 用户,您不应该相信上传的文件实际上是这个 类型。您仍然需要验证文件是否包含内容 内容类型标头声明的内容——“信任但验证”。

然后在我的项目中通过打印上传的文件的内容类型来尝试这个

print request.FILES['file'].content_type

它会打印出文件的内容类型,例如文本/疼痛,图像/jpeg

但问题是:如果我欺骗文件。例如,使用记事本删除 image/jpeg 文件的标题然后保存,打印仍然会打印 'image/jpeg'。但是,由于标题已被我删除,无法使用图像查看器打开(尽管文件的扩展名仍然是 .jpg),因此不应将其识别为“image/jpeg”文件。

看来 UploadedFile.content_type 只是检查文件的扩展名,因此不是检查和验证文件类型的安全方法,需要一些其他方法来更好地解决检查问题。我说的对吗,如果有任何误解,请纠正我。

非常感谢您的帮助。

【问题讨论】:

    标签: django filefield


    【解决方案1】:

    它检查标题,您应该依靠更强大的工具服务器端来确认实际内容,就像这里建议的那样:

    Django - Uploaded file type validation

    【讨论】:

      猜你喜欢
      • 2017-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-22
      • 2013-01-28
      • 1970-01-01
      • 2019-12-30
      相关资源
      最近更新 更多