Как проверить, что файл, загруженный с помощью php, не содержит исполняемый двоичный файл?

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

Затем хакеры могут использовать такую ​​программу, как GIMP, для встраивания php-скрипта в двоичные данные изображения, аудио или любого другого файла.

Как я могу проверить это и предотвратить его?

Вы можете использовать mime_content_type (), чтобы получить фактический тип mime файла, а не значение, переданное браузером клиента.

Затем вы можете использовать библиотеку, такую ​​как php-ClamAV, которая позволяет выполнять антивирусные проверки в PHP.

Вы можете отменить любое расширение файла, за исключением ожидаемых (например, .png, .jpg и т. Д., Если вы ожидаете изображений). В конкретном случае изображений вы также можете нейтрализовать изображения, изменив их (например, слегка изменив их размер, измените степень сжатия, что изменит данные и нейтрализует любой исполняемый файл).

Наконец, конечно, возьмите, чтобы не дать право на исполнение файла. Но, вопреки сказанному в комментариях, это не защитит вас. Если хакер находит способ запуска php-файла, хотя, например, инъекцию, он сможет chmod-файл и получить правильное выполнение (и даже запустить его).

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