У меня есть проект 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, которое необходимо улучшить с их стороны?
Комментарий от Карлос Гранадос ответ:
Как следует из названия, MimeTypeGuesser просто «угадывает» MimeType.
Из моего опыта действительно трудно получить правильный тип пантомимы
для файлов, поступающих из разных источников, поэтому вам нужно будет закончить
до открытия диапазона типов, которые вы принимаете. Если вы беспокоитесь
о безопасности, вы всегда можете применить больше тестов для этих файлов, для
пример использования анализатора docx, чтобы убедиться, что это настоящий файл docx
Других решений пока нет …