Проверка загрузки изображений с помощью PHP - PullRequest
1 голос
/ 25 июля 2011

У меня есть настройка программы загрузки изображений, которую я сделал с помощью PHP, чтобы позволить публике отправлять свои изображения. У меня возникают проблемы с поиском метода, чтобы убедиться, что файл на самом деле является изображением. Я проверяю тип файла, а также использую getimagesize (), среди других проверок, но если я переименую текстовый файл в файл JPG, моя проверка разрешит файл. Как я могу убедиться, что это на самом деле изображение? Я не хочу, чтобы мой босс запускал зараженные файлы.

Ответы [ 4 ]

0 голосов
/ 25 июля 2011

Воспроизведите загруженное изображение с помощью gd. Если изображение не воспроизводится, это не изображение!

Если эта функция возвращает false, значит это недопустимое изображение. Я не работал с более чем jpg, png и gif, так что может быть есть еще несколько типов изображений, которые могут вписываться в эту функцию (bmp?) ...

function checkFileType($filetype,$tmp_name)
{
    $return_val = false;
    switch($filetype){
        case 'image/jpg':
        case 'image/jpeg':
        case 'image/pjpeg':
            $return_val = @imagecreatefromjpeg($tmp_name);
        break;
        case 'image/gif':
            $return_val = @imagecreatefromgif($tmp_name);
        break;
        case 'image/png':
        case 'image/x-png':
            $return_val = @imagecreatefrompng($tmp_name);
        break;
    }
    return $return_val;
}
0 голосов
/ 25 июля 2011

вы можете использовать команду Imagick identifImage ().
, если он возвращает вам данные изображения как его изображение, если он возвращает ошибку или нет данных, то это не изображение.есть версия этого инструмента для командной строки, которую вы можете использовать для: http://www.imagemagick.org/script/identify.php, если у вас нет php, скомпилированного с imagemagick

0 голосов
/ 25 июля 2011

Как насчет использования функции Exit-imagetype () модуля Exif?

http://www.php.net/manual/en/function.exif-imagetype.php

<?php
if (exif_imagetype('image.gif') != IMAGETYPE_GIF) {
    echo 'The picture is not a gif';
}
?>
0 голосов
/ 25 июля 2011

Проверка разрешенных расширений

.gif .jpg .jpeg .png должно быть разрешено

...