2016-04-14 5 views
0

ich einen Weg bin der Umsetzung Datei-Upload auf Django 1.8 läuft Python 3.4Datei-Upload-Typen auf Django einschränken

Grundsätzlich zu beschränken, möchte ich die Mimetype einer Datei überprüfen, wenn sie mimetype hochladen verwenden. Wenn ich jedoch den Dateinamen von bad_image.exe zu bad_image.exe.jpg manipuliere, ist der Mimetyp immer noch image/jpeg. Dies könnte immer noch zu einem bösartigen Angriff führen.

Gibt es eine Möglichkeit, dies tatsächlich zu implementieren? Ich habe versucht magic zu, aber es funktioniert immer noch nicht.

Antwort

0

Du hast Recht, eine umzubenennen .exe-.exe.jpg und content_type Ausgang (image/jpeg).

Aber python-magic verwenden, wenn sie richtig die Datei zu überprüfen, wie ihre Kopf- und nicht die Verlängerung überprüft, so dass der Ausgang in meinem Test war:

PE32 executable (GUI) Intel 80386, for MS Windows

Trotzdem glaube ich, dass die Header modifiziert werden können, ... Ich hoffe, das hilft.


EDIT: In meinem Test Verwendung 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 

Es ist zu einfach, aber es war einfach zu testen.

+0

hallo, kann ich fragen dann, wie bekomme ich Zugriff auf die hochgeladene Datei, da die Datei im Speicher gespeichert ist? – bryansis2010

+0

Ich habe die Antwort aktualisiert. Laden Sie in diesem Fall die Datei hoch, aber Sie können Typen und Erweiterungen überprüfen und Formularfehler senden. –

Verwandte Themen