Как проверить, что файл является действительным изображением или не использует php? - PullRequest
0 голосов
/ 21 ноября 2018

Мне нужны ваши предложения для проверки файла изображения.Если пользователь загрузит какой-либо файл с измененным типом расширения, например (jpg, jpeg, bmp, png), как мы выясним это в PHP?Я не хочу проверять только расширения типов файлов, но я хочу знать, что загруженный файл не является вредоносным файлом, изменив его тип расширения.Например: у нас есть файл hack.php, и мы изменим его с помощью файла hack.jpg, чтобы мы могли определить, что это недопустимый файл.

1 Ответ

0 голосов
/ 21 ноября 2018

Я буду использовать mime_content_type , если существует.Еще выполните команду linux file -i -b в файле, чтобы получить ответ.

Рассмотрите функцию следующим образом:

function getFileType($file_name) {
        if(! function_exists('mime_content_type')) {
            $isUnix = strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN' && DIRECTORY_SEPARATOR === '/';

            // check whether operating system is that of a UNIX type.
            if ($isUnix) {
                $type = null;
                exec('file -i -b ' . realpath($file_name), $type);
                $parts = @ explode(";", $type[0]); // can be of format text/plain;  charset=us-ascii 
                return trim($parts[0]);
            }

            // the file program/command does not exist on Windows.
            else {
                return null;
            }
        } else {
            return mime_content_type($file_name);
        }
    }

Вы также можете использовать finfo-file isвы предпочитаете.

...