Вы не зашли.
Главная » PHP » Загрузка картинки в папку)
#41. tipsun Off (19)
Moderator
2011.08.20 01:01
Разрешение и так проверяется, и вес проверяется. Для теста на локалке закомментил проверку на вес и http:// убрал.
- - - -
Насчет шелл, а разве может быть такое?
Ну можно сделать чтоб проверка была на картинку, точнее на её разрешение, чтоб было не меньше 1x1. Иначе типа не картинка.
- - - -
Я еще хотел сделать множественный upload, но скорее всего не буду делать, по 1 файлу тоже не плохо smile
Думал этим же получится сделать, но лучше отдельно, там поменьше кода надо, все и так определяется.
Отредактировано tipsun (2011.08.20 01:01)
#42. POFIGISST Off (6)
Участник
2011.08.20 03:03
ну шелл это файл пхп,но с разными форматами незнаю,если закинуть например шелл с форматом gif ,тот как его потом на хосте переименовать в пхп,но такая защита есть(по пикселям проверяют) значить наверное и с шеллом можно замутить такую фигню,не просто так же защиту придумали)))
#43. tipsun Off (19)
Moderator
2011.08.20 04:04
Ну надо будет поискать инфу тогда.
Добавлено спустя   8 минут  58 секунд:
include($file) - вот действительно шелл, который кодеры сами создают. А загрузить не получится все равно, надо чтоб у файла было расширение *.php которое врядли пройдет, т.к. функция которая выводит расширение операется на первую точку справа. Все что до нее (справа) будет проверяться как формат файла. Если то, что содержит "до" не содержит массив, то файл загружен не будет.
Отредактировано tipsun (2011.08.20 04:04)
#44. POFIGISST Off (6)
Участник
2011.08.20 04:04
это как то так выглядит))

Код:
$photo_giz = getimagesize($put);
if (!isset($photo_giz[0] ) && !isset($photo_giz[1])){
$err='Ошибка! Файл не допустим!';
echo'Ошибка! Файл не допустим!
';
unlink($put);
}
З.Ы. в аську зайди если можешь))
Отредактировано POFIGISST (2011.08.20 04:04)
#45. tipsun Off (19)
Moderator
2011.08.20 04:04
Тут ведь и тип проверяется.
Фиг знает, ща добавлю "если пусто"="ошибка".
Код:
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:04)
#46. Gemorroj On (107)
Administrator
2011.08.20 08:08
POFIGISST, проверка размера - это не защита от шеллов.
#47. tipsun Off (19)
Moderator
2011.08.29 06:06
Можно:
- лог оставлять на потом.
- сделать, для удобства, указание строки разрешенных типов 'mp3,3gp,zip'
- сделать готовый вариант разрешенных типов или принимать указанные.
- сделать $load->run('file_list'); а так принимать $_POST[$var];
Код:
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:06)
#48. POFIGISST Off (6)
Участник
2011.08.29 15:03
Gemorroj написал:
POFIGISST, проверка размера - это не защита от шеллов.
я думал что от шеллов,так как у них нету пикселей(( а от чего эта защита?))
#49. Gemorroj On (107)
Administrator
2011.09.01 11:11
POFIGISST, как это нет? getimagesize возвращает на мне известных шеллах 16к пикселей.
Страниц: 13 4 5 Все
Главная
WEB
PunBB Mod v0.6.2
0.016 s