Django-UploadedFile.content_type检查上传文件的头或仅检查扩展名



我阅读了以下django文档

上传的文件内容类型

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

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

print request.FILES['file'].content_type

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

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

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

非常感谢你的帮助。

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

Django-上传的文件类型验证

相关内容

  • 没有找到相关文章

最新更新