Фон
В целевом приложении отслеживания проблем (в django) пользователи могут добавлять вложения файлов во внутренние сообщения.Файлы в основном имеют разные форматы изображений, офисные документы и электронные таблицы (Microsoft или Open Office), PDF и PSD.
Пользовательский тип поля файла (тип расширяющий FileField) в настоящее время проверяет, что файлы не превышают заданный размери что файл content_type
находится в MIME-типе приложения «белый список».Но поскольку база пользователей очень разнообразна (многонациональная и мультиплатформенная), нам часто приходится настраивать наш белый список, поскольку пользователи, использующие старые или новые версии приложений, имеют разные типы MIME (даже если они являются действительными файлами и открываются правильнодругие пользователи в компании).
Примечание : файлы не «выполняются» Apache, они просто хранятся (с разрешениями unix 600) и могут быть загружены пользователями.
Вопрос
Какие плюсы и минусы для разных типов валидации?
Несколько вариантов:
- Белый или черный список MIME-типа
- Расширение файла во время списка или черного списка
- Проверка входных данных загрузки файла Django и безопасность даже предлагает "вам действительно нужно прочитать файлчтобы быть уверенным, что это JPEG, а не .EXE "(это даже жизнеспособно, когда допускается принимать файлы разных типов?)
Существует ли« правильный »способ проверки загрузки файлов?
Редактировать
Позвольте уточнить.Я могу понять, что проверка всего файла в программе, с которой он должен быть открыт, чтобы убедиться, что он работает и не сломан, был бы единственным способом полностью подтвердить, что файл соответствует тому, что он говорит, и что это не так.t поврежден.
Но эти файлы похожи на вложения электронной почты.мы не можем проверить, что каждый PSD является действующим и рабочим изображением Photoshop, то же самое относится и к JPG или любому другому типу.Даже если это именно то, о чем говорится, мы не можем гарантировать, что это полностью функциональный файл.
Итак, на что я надеялся, так это: действительно ли магия файлов абсолютно необходима?Какую защиту это действительно добавляет?И снова белый список типа MIME фактически добавляет какую-либо защиту, чего нет в белом списке расширения файла?Если у файла есть расширение файла CSV, JPG, GIF, DOC, PSD, действительно ли реально проверить, что это то, о чем говорится, даже если само приложение не зависит от файла?
Опасно ли использовать простой белый список расширений файлов, исключая явных нарушителей (EXE, BAT и т. Д.) И, я думаю, запрещать файлы, которые опасны для пользователей?