Неправильные миметипы docx / pptx, сделанные с помощью Pages / Keynote

У меня есть проект Symfony 2.7.

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

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

.pptx а также .docx файлы, созданные Power Point и Word, загружены правильно и имеют правильный тип MIME (application/vnd.ms-powerpoint а также application/msword), но те, которые создаются в Pages и Keynote, а затем экспортируются в .docx/.pptx иметь подражание application/octet-stream или же application/zip (в зависимости от используемого MimeTypeGuesser Symfony). По умолчанию FileinfoMimeTypeGuesser используется, он внутренне вызывает finfo возвращать application/octet-stream, Второй догадчик, FileBinaryMimeTypeGuesser, возвращает application/zip (который использует file --mime Я верю).

Также, когда я бегу file --mime на этих файлах (как на моем Vagrant, который является CentOS 7, так и на моем Mac) я получаю следующие результаты:

Бродяга:

[vagrant@localhost ~]$ file --mime keynote_pptx_test.pptx
keynote_pptx_test.pptx: application/zip; charset=binary

[vagrant@localhost ~]$ file --mime powerpoint_pptx_test.pptx
powerpoint_pptx_test.pptx: application/vnd.ms-powerpoint; charset=binary

Местный:

user@MacBook-Pro $ file --mime keynote_pptx_test.pptx
keynote_pptx_test.pptx: application/zip; charset=binary

user@MacBook-Pro $ file --mime powerpoint_pptx_test.pptx
powerpoint_pptx_test.pptx: application/zip; charset=binary

Очевидно, я не хочу, чтобы включить application/zip для загрузки в целях безопасности.

Guesser типа MIME по умолчанию (FileinfoMimeTypeGuesser) возвращает application/octet-stream, Я не уверен, хочу ли я включить этот mimetype для загрузки, также по соображениям безопасности.

Есть ли что-нибудь, что я могу сделать, чтобы эти загрузки происходили, например, проверить mimetype по-другому (может быть, в Symfony больше гуглеров?), Или я должен включить application/octet-stream (если это так, каковы последствия для безопасности), или это просто программное обеспечение Apple, которое необходимо улучшить с их стороны?

2

Решение

Комментарий от Карлос Гранадос ответ:

Как следует из названия, MimeTypeGuesser просто «угадывает» MimeType.
Из моего опыта действительно трудно получить правильный тип пантомимы
для файлов, поступающих из разных источников, поэтому вам нужно будет закончить
до открытия диапазона типов, которые вы принимаете. Если вы беспокоитесь
о безопасности, вы всегда можете применить больше тестов для этих файлов, для
пример использования анализатора docx, чтобы убедиться, что это настоящий файл docx

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]