我正在实现一种在运行python 3.4的Django 1.8上限制文件上传的方法
基本上,我想在使用mimetype
上传时检查文件的MIMEType。但是,当我将文件名从bad_image.exe
操作为bad_image.exe.jpg
时,mimetype仍为image/jpeg
。这仍然可能导致恶意攻击。
有没有办法实际实现这个?我也试过了magic
,但它仍然不起作用。
答案 0 :(得分:0)
您没错,将文件.exe
重命名为.exe.jpg
,content_type
输出(image/jpeg)
。
但是使用python-magic如果正确检查文件是检查其标题而不是扩展名,那么输出就在我的测试中:
PE32 executable (GUI) Intel 80386, for MS Windows
即便如此,我认为标题可能会被修改......希望有所帮助。
编辑:在我的测试中使用cleaning a specific attribute
class UploadFileForm(forms.ModelForm):
class Meta:
model = FileTestUpload
fields = ('title','file')
def clean_file(self):
f = self.cleaned_data.get("file", False)
ftype = magic.from_buffer(f.read()) # InMemoryUploadedFile
print ftype
return f
这太简单了,只是为了测试。