Я прочитал много статей (в том числе этот) говорить о безопасной загрузке файлов в PHP, и я думаю, что это лучший способ убедиться, что загруженный файл является безопасным.
Во-первых, я использую mime_content_type (), чтобы проверить тип его файла.
Если это JPG, JPEG или PNG, я собираюсь клонировать его с помощью imagecreatefromjpg (), в случае успеха, сохранить новый файл и уничтожить оригинал.
Я не уверен, что это достаточно безопасно, или мне нужно сделать что-то еще.
Я ценю любую помощь.
Я сделал некоторые тесты для mime_content_type
Когда я создал текстовый файл и назвал его «обманным путем» spoof.jpg
…
обнаруженный тип пантомимы все еще text/plain
Когда я запустил его на несуществующий файл, он бросает
PHP Warning: mime_content_type(not.exist):
failed to open stream: No such file or directory
Это означает mime_content_type
проверки содержимое файла для типа пантомимы.
Это абсолютно безопасно, хотя? Это безопасно обнаружить правда MIME, это точно;)
Однако вам следует также проверить наличие таких параметров, как размер или очистка имени файла (при повторном использовании), для получения более подробной информации о безопасности есть хороший ответ по стеку безопасности: Риски формы загрузки изображений PHP
обратите внимание, что в руководстве по PHP это находится в меню «Fileinfo Functions» =>, это как бы подразумевает, что он использует механизмы чтения файлов, хотя это правда, что ручной ввод не говорит об этом явно …
Других решений пока нет …