Надежность Mime-типов в загрузках (PHP)

Я уже давно задавал этот вопрос: как точно определяется MIME-тип файла? Я считаю, что это делается путем проверки того, содержат ли определенные байты файла какие-либо из известных магических чисел / сигнатур файлов , верно?

Если да, возникает другой вопрос, давайте скажем, я загружаю bash-скрипт с поддельной подписью файла GIF на веб-сайт, который позволяет загружать только изображения, что произойдет? Либо:

  1. процедура обнаружения mimetype достаточно умен, чтобы обнаруживать поддельные подписи, либо
  2. image / gif ошибочно возвращается как mimetype, и загрузка может продолжаться

У меня нет HEX редактор установил банкомат, и я не люблю делать выводы, связанные с безопасностью, из тестов, так как я могу что-то пропустить (или неверно истолковать), поэтому мой вопрос: какой из вышеперечисленных вариантов правильный?

Также, есть ли какие-либо другие передовые методы (помимо проверки mimetype), чтобы убедиться, что любой данный файл на самом деле является тем, чем он кажется / нуждается (или разрешен)? Заранее спасибо.

PS: Для ясности, я не спрашиваю об индексе типа в суперглобале $ _ FILES .

8
задан Alix Axel 14 May 2011 в 08:24
поделиться