Как я могу найти MIME-тип файла без расширения, который отправляется мне внутри ZIP-файла? - PullRequest
1 голос
/ 02 февраля 2011

У меня есть простая проблема: в разрабатываемой системе пользователь может присылать нам zip-файлы, и мне нужно отфильтровать их содержимое.(блокировать приложения и вредоносные скрипты)

Блокировать внутренние файлы по расширению легко, но файлы без расширения очень распространены, и расширение не является самым надежным источником содержимого файла.

Я уже пытался использовать магию Python, но для этого требуются пакеты, которые мой сервер не поддерживает, и сервер мне не поможет.Ой!У меня нет возможности изменить систему на другой сервер.Таким образом, в этом случае для меня нет магии питона.

Кто-нибудь знает, как проверить тип файла по заголовку?

1 Ответ

1 голос
/ 02 февраля 2011

Не прямой ответ, но формат / etc / magic не так уж и сложен, поэтому, если вам нужно обнаружить только несколько типов файлов, возможно, проще всего написать собственную процедуру обнаружения.

# Java

0       beshort         0xcafe
>2      beshort         0xbabe          application/x-java-applet

получаем:

data = open(path).read()
if data[0:4] == '\xca\xfe\xba\xbe':
    minetype = 'application/x-java-applet'
...