限制Django上的文件上载类型

时间:2016-04-14 08:28:41

标签: python django security

我正在实现一种在运行python 3.4的Django 1.8上限制文件上传的方法

基本上,我想在使用mimetype上传时检查文件的MIMEType。但是,当我将文件名从bad_image.exe操作为bad_image.exe.jpg时,mimetype仍为image/jpeg。这仍然可能导致恶意攻击。

有没有办法实际实现这个?我也试过了magic,但它仍然不起作用。

1 个答案:

答案 0 :(得分:0)

您没错,将文件.exe重命名为.exe.jpgcontent_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

这太简单了,只是为了测试。