【问题标题】:Restrict File Upload types on Django限制 Django 上的文件上传类型
【发布时间】:2016-04-14 08:28:40
【问题描述】:

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

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

有没有办法真正实现这一点?我也试过magic,但还是不行。

【问题讨论】:

    标签: python django security


    【解决方案1】:

    你是对的,将文件 .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
    

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

    【讨论】:

    • 你好,请问,上传的文件是存储在内存中的,如何访问?
    • 我更新了答案。在这种情况下,请上传文件,但您可以检查类型和扩展名并发送表单错误。
    猜你喜欢
    • 2010-12-16
    • 1970-01-01
    • 2014-03-21
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 2016-11-10
    相关资源
    最近更新 更多