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

Django-UploadedFile.content_type检查上传文件的标题还是仅检查扩展名?,django,filefield,Django,Filefield,我阅读了以下django文件 UploadedFile.content\u类型 随文件一起上载的内容类型标头 文件(例如text/plain或application/pdf)。与任何由 用户,你不应该相信上传的文件实际上就是这个 类型。您仍然需要验证文件是否包含内容 内容类型标题声明–“信任但验证” 然后在我的项目中尝试了这一点,打印出上传文件的内容类型 print request.FILES['file'].content_type 它将打印出文件的内容类型,例如文本/疼痛、图像/jpeg

我阅读了以下django文件

UploadedFile.content\u类型

随文件一起上载的内容类型标头 文件(例如text/plain或application/pdf)。与任何由 用户,你不应该相信上传的文件实际上就是这个 类型。您仍然需要验证文件是否包含内容 内容类型标题声明–“信任但验证”

然后在我的项目中尝试了这一点,打印出上传文件的内容类型

print request.FILES['file'].content_type
它将打印出文件的内容类型,例如文本/疼痛、图像/jpeg

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

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


非常感谢您的帮助。

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