#41 2011.08.20 01:23

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Загрузка картинки в папку)

Разрешение и так проверяется, и вес проверяется. Для теста на локалке закомментил проверку на вес и http:// убрал.
- - - -
Насчет шелл, а разве может быть такое?
Ну можно сделать чтоб проверка была на картинку, точнее на её разрешение, чтоб было не меньше 1x1. Иначе типа не картинка.
- - - -
Я еще хотел сделать множественный upload, но скорее всего не буду делать, по 1 файлу тоже не плохо smile
Думал этим же получится сделать, но лучше отдельно, там поменьше кода надо, все и так определяется.

Отредактировано tipsun (2011.08.20 01:28)

Неактивен

#42 2011.08.20 03:14

POFIGISST
Участник
Зарегистрирован: 2011.03.20
Сообщений: 1531
Карма: 6
Профиль

Re: Загрузка картинки в папку)

ну шелл это файл пхп,но с разными форматами незнаю,если закинуть например шелл с форматом gif ,тот как его потом на хосте переименовать в пхп,но такая защита есть(по пикселям проверяют) значить наверное и с шеллом можно замутить такую фигню,не просто так же защиту придумали)))

Неактивен

#43 2011.08.20 04:16

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Загрузка картинки в папку)

Ну надо будет поискать инфу тогда.
Добавлено спустя   8 минут  58 секунд:
include($file) - вот действительно шелл, который кодеры сами создают. А загрузить не получится все равно, надо чтоб у файла было расширение *.php которое врядли пройдет, т.к. функция которая выводит расширение операется на первую точку справа. Все что до нее (справа) будет проверяться как формат файла. Если то, что содержит "до" не содержит массив, то файл загружен не будет.

Отредактировано tipsun (2011.08.20 04:26)

Неактивен

#44 2011.08.20 04:26

POFIGISST
Участник
Зарегистрирован: 2011.03.20
Сообщений: 1531
Карма: 6
Профиль

Re: Загрузка картинки в папку)

это как то так выглядит))

Код:

1
2
3
4
5
6
7
$photo_giz = getimagesize($put);
if (!isset($photo_giz[0] ) && !isset($photo_giz[1])){
$err='Ошибка! Файл не допустим!';
echo'Ошибка! Файл не допустим!
';
unlink($put);
}

З.Ы. в аську зайди если можешь))

Отредактировано POFIGISST (2011.08.20 04:28)

Неактивен

#45 2011.08.20 04:36

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Загрузка картинки в папку)

Тут ведь и тип проверяется.
Фиг знает, ща добавлю "если пусто"="ошибка".

Код:

1
span style="color: #0000BB"><?phpfunction imgCheck($url) { //тип if(false !== ($image = getImageSize($url)) and 4 > $image[2] and IMAGE > $image[0] and IMAGE > $image[1]) return $image[0].'x'.$image[1]; else return false; }?>

Отредактировано tipsun (2011.08.20 04:37)

Неактивен

#46 2011.08.20 08:58

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Загрузка картинки в папку)

POFIGISST, проверка размера - это не защита от шеллов.

Неактивен

#47 2011.08.29 06:20

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Загрузка картинки в папку)

Можно:
- лог оставлять на потом.
- сделать, для удобства, указание строки разрешенных типов 'mp3,3gp,zip'
- сделать готовый вариант разрешенных типов или принимать указанные.
- сделать $load->run('file_list'); а так принимать $_POST[$var];

Код:

1
span style="color: #0000BB"><?php//....................path.....size..resol.......types.//$load = new import('loads/', 2024, 800, array('3gp', 'mp3', 'jpg', 'gif', 'png'));//echo $load->run($_POST['file_list']);class import { public $_path, $_size, $_image, $_allow; function __construct($path, $size, $image, $allow) { $this->_path = isset($path) ? $path : 0; // path $this->_size = isset($size) ? $size : 0; // kB $this->_image = isset($image) ? $image : 0; // [width]x[height] $this->_allow = is_array($allow) ? $allow : array(); // *.type } function mb_strrTok($text=0, $symbol=0, $char='UTF-8') { if (!trim($text) or !trim($symbol)) return false; return mb_subStr($text, 1+ mb_strrPos($text, $symbol, 0, $char), E_ALL, $char); } function typeCheck($url) { $ext = mb_strrTok($url, '.'); if (!in_array($ext, $this->_allow)) return false; return $ext; } function sizeCheck($url) { $size = get_headers($url, 1); $size = $size['Content-Length']/1024; if (empty($size) or $this->_size < $size) return false; return $size; } function imgCheck($url) { if (false !== ($image = getImageSize($url)) and 4 > $image[2] and 0 < $image[0] and 0 < $image[1] and $this->_image > $image[0] and $this->_image > $image[1]) return $image[0].'x'.$image[1]; return false; } function import($url) { $url = 'http://' == subStr($url, 0, 7) ? $url : 'http://'.$url; $name = baseName($url); if (false !== ($ftype = typeCheck($url)) and false !== ($fsize = sizeCheck($url)) and false !== ($fres = imgCheck($url))) { if (copy($url, $this->_path.$name)) return 'Copied: '.$name.' ('.$fsize.'/'.$ftype.'/'.$fres.')'.PHP_EOL; return 'Error : '.$name.PHP_EOL; } return 'Missed: '.$name.PHP_EOL; } function run($list) { $log = null; $import = isset($list) ? trim($list) : null; if (!empty($import)) { foreach (preg_split('/\n/', $import) as $link) { $link = trim($link); if ($link) { $log .= import($link); } } } else return 'Empty list'; return nl2br($log); } }?>

Отредактировано tipsun (2011.08.29 06:48)

Неактивен

#48 2011.08.29 15:26

POFIGISST
Участник
Зарегистрирован: 2011.03.20
Сообщений: 1531
Карма: 6
Профиль

Re: Загрузка картинки в папку)

Gemorroj написал:

POFIGISST, проверка размера - это не защита от шеллов.

я думал что от шеллов,так как у них нету пикселей(( а от чего эта защита?))

Неактивен

#49 2011.09.01 11:36

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Загрузка картинки в папку)

POFIGISST, как это нет? getimagesize возвращает на мне известных шеллах 16к пикселей.

Неактивен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.011 s