Я пытался проверить загрузку файла.Сначала я попытался проверить расширение.но если вредоносный файл со следующим расширением также будет проходить проверку.
def validate_file_extension(value):
ext = os.path.splitext(value.name)[1]
valid_extensions = ['.pdf', '.doc', '.docx', '.jpg', '.png', '.xlsx', '.xls', 'ppt']
if not ext.lower() in valid_extensions:
raise ValidationError(u'Unsupported file extension.')
Затем я попытался использовать магию Python, чтобы просмотреть файл и определить фактический тип.
def validate_file_type(value):
file_type = magic.from_buffer(value.read(1024), mime=True)
valid_file_types = ['image/png',
'image/jpg','text/plain',
'application/pdf',
'application/ms-excel',]
if not file_type.lower() in valid_file_types:
raise ValidationError(u'Unsupported file.')
Но файлы Excel, Word и ppt распознаются как «application / zip».Поэтому не может использовать этот подход для документов MS.Есть ли лучший способ проверить загрузку файлов?