Загрузка картинок php

PHP
Чтобы максимально обезопасить свой сайт от взлома нужно выполнять следующие действия при загрузке картинок на сайт.
  1. Проверять расширение файла
  2. Проверять mime-тип файла
  3. Проверять наличие вредоностного кода в картинке, в частности php
  4. Запретить выполнение php в папке с картинками

Следующий код поможет выполнить первые 3 условия.
function check($source)
    {
        // разрешим только нужные расширения картинок
        $aExt = array(".jpg", ".gif", ".png");
        $bStop = 1;
        foreach ($aExt as $item) {
            if (preg_match("/$item\$/i", $source['name'])) {
                $bStop = 0;
            }
        }

        if ($bStop) return false;

        // проверим mime-тип
        $imageinfo = getimagesize($source['tmp_name']);
        if ($imageinfo['mime'] != 'image/jpeg' &&
                $imageinfo['mime'] != 'image/gif' &&
                $imageinfo['mime'] != 'image/png'
        ) {
            return false;
        }

        $a = @exec('cat ' . $source['tmp_name']);
        if ($a && strpos($a, '<?')) return false;

        return true;
    }


Для выполнения четвертого условия читайте статью "Как запретить выполнение php кода в папке" или добавьте следующий код в настройки хоста для nginx

location ~* ^/.*(?<!/index).(php|php3|php4|php5|phtml|phps|pl|pm)$ {
                deny all;
        }


Данный код запретит выполнение всех файлов с указанными расширениями кроме файла index.php.
Понравился пост? Поделись с друзьями:

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.