Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> src тэга IMG - чем грозит безопасности? 
V
    Опции темы
s0lman
Дата 11.3.2009, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



Привет всем.
Использую скрипт для  создания уменьшенной копии изображения, который используется следующим образом
Код

<IMG src="getimg.php?src=mypicture.jpg">

Наверняка все или почти все с подобными встречались.
Вопрос в следующем: насколько безопасно в GET параметре передавать путь к файлу? Чем может навредить потенциальный злоумышленник?
Спасибо.



--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
enof
Дата 11.3.2009, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



s0lman, смотря как используются введенные данные.
PM MAIL ICQ Skype   Вверх
s0lman
Дата 11.3.2009, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



Вот эта функция
путь к файлу - $this->src
Код

public function img_resize(){

        $link_array = explode('.',$this->src);
        $filetype=$link_array[count($link_array)-1];


        if(!file_exists($this->src)){
            $size=$this->width;
        }
        else $size = getimagesize($this->src);

        if ($size === false) return false;
        // Определяем исходный формат по MIME-информации, предоставленной
        // функцией getimagesize, и выбираем соответствующую формату
        // imagecreatefrom-функцию.
        $format = strtolower(substr($size['mime'], strpos($size['mime'], '/') + 1));
        $icfunc = "imagecreatefrom" . $format;
        if (!function_exists($icfunc)) return false;

        if (intval($this->width) == 0) {
            $new_width = round($size[0]);
            $new_height = round($size[1]);
        } else {
            if($size[0]>=$size[1]) {$ratio = $size[0] / $this->width;}
             else { $ratio = $size[1]/$this->height;}
            $new_width = round($size[0] / $ratio);
            $new_height = round($size[1] / $ratio);
            $new_left = 0; //$use_x_ratio  ? 0 : floor(($$this->width - $new_width) / 2);
            $new_top = 0; //!$use_x_ratio ? 0 : floor(($height - $new_height) / 2);
        }

        $isrc = $icfunc($this->src);
        $idest = imagecreatetruecolor($new_width, $new_height);

        imagefill($idest, 0, 0, RGB);

        imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0,
            $new_width, $new_height, $size[0], $size[1]);

        if (!file_exists($this->src)) {
            $textcolor = imagecolorallocate($idest, 255, 0, 0);
            // write the string at the top left
            imagestring($idest, 2, 0, 0, "Not found", $textcolor);
        }
        switch ($filetype) {
            case 'jpg':
                imagejpeg($idest);
                break;
            case 'gif': // константное выражение 2
                imagegif($idest);
                break;
        }
        imagedestroy($isrc);
        imagedestroy($idest);
        return true;
    }



--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
nerezus
Дата 11.3.2009, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



<img src="javascript:alert('бебебе')">

+ basic-авторизация может на картинке стоять - и пользователь получит окошко для ввода пароля.

Это сообщение отредактировал(а) nerezus - 11.3.2009, 22:15


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
gta4kv
Дата 11.3.2009, 22:20 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



s0lman, проверяй расширение файла, что бы не внешняя ссылка была и что бы файл существовал. (наверное под картинки же отдельная папка (if(file_exists( 'path/to/folder' . $image )))

Добавлено @ 22:21
Код

   if(!file_exists($this->src)){
            $size=$this->width;
        }
        else $size = getimagesize($this->src);
        if ($size === false) return false;


O_O

Код

$size = (file_exists($this->src) ? getimagesize($this->src) : (return false));


Это сообщение отредактировал(а) gta4kv - 12.3.2009, 08:23
PM MAIL   Вверх
s0lman
Дата 12.3.2009, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



Позволю себе немного исправить
Код

$size = (file_exists($this->src) ? getimagesize($this->src) : (false));


smile


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0465 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.