我正在实现一种限制运行Python 3.4的Django 1.8上的文件上传的方法。
基本上,我想在使用mimetypes
上传文件时检查文件的MIME类型。但是,当我将文件名从bad_image.exe
操作为bad_image.exe.jpg
时,MIME类型仍为image/jpeg
。这仍然可能导致恶意攻击。
有没有办法实际实现这个?
答案 0 :(得分:0)
您可以通过设置要禁止的MIME类型黑名单来反向执行检查。然后,对于每种MIME类型,请使用例如
mimetypes.guess_all_extensions('application/x-msdownload')
生成可能的恶意扩展列表,然后您可以在上传的文件名中搜索。
警告。强>
依靠文件名和MIME类型防范恶意上传是not safe practice。至少,沙盒用户在单独的域中上传可以防止任何通过防御的恶意代码攻击您的网站。