2016-04-14 3 views
0

上のファイルアップロードの種類を制限する基本的に、私は、ファイルのMIMEタイプをチェックしたいです。しかし、ファイル名をbad_image.exeからbad_image.exe.jpgに変更すると、mimetypeはまだimage/jpegです。これは依然として悪意のある攻撃につながる可能性があります。彼らは<code>mimetype</code>を使用してアップロードするとき、私は、Python 3.4</p> <p>を実行しているDjangoの1.8上のファイルのアップロードを制限する方法を実装していますジャンゴ

これを実際に実装する方法はありますか?私もmagicを試しましたが、それでも動作しません。

答えて

0

ファイル名を.exeに変更し、.exe.jpgcontent_typeの出力を(image/jpeg)に変更してください。

しかし、適切ならば拡張子を自分のヘッダをチェックしないと、ファイルをチェックし、その出力は私のテストにあったpython-magicを使用して:

PE32 executable (GUI) Intel 80386, for MS Windows

たとえそうだとしても、私は、ヘッダーが変更されてもよいと思います...助けてくれることを望む。


EDIT:私のテスト使用で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 

それはあまりにもシンプルですが、それだけで試験することでした。

+0

こんにちは、ファイルがメモリに保存されているので、アップロードされたファイルにどのようにアクセスできますか? – bryansis2010

+0

私は答えを更新しました。この場合はファイルをアップロードしますが、タイプと拡張子を確認してフォームエラーを送信することができます。 –

関連する問題