Django - UploadedFile.content_type检查上传文件的标题或只是扩展名?

时间:2013-07-22 02:35:17

标签: django filefield

我从以下django文件中读到了

  

UploadedFile.content_type

     

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

然后在我的项目中尝试打印出用

上传的文件的内容类型
print request.FILES['file'].content_type

它会打印出文件的内容类型,例如text / pain,image / jpeg

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

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

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

它检查标题,您应该依靠更强大的工具服务器端来确认实际内容,如下所示:

Django - Uploaded file type validation