"Белый Тигр" Спасибо, пойду по похожему пути !
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Цитата (andrey888 @ 13.02.2012 - 21:46) |
Вывод - эта функция совсем не панацея .. |
$types = array('jpg','jpeg','gif','png');
if(in_array(strtolower(pathinfo($_FILES["picture"]["name"], PATHINFO_EXTENSION)), $types))
move_uploaded_file ( $_FILES["picture"]["tmp_name"], $uploaddir.$_FILES["picture"]["name"] );
Цитата (inpost @ 14.02.2012 - 11:36) |
Кроме уязвимости в include. В связке с include можно будет запустить выполнение PHP кода, находящегося в файле с расширением .jpg. Пробовал у себя |
Цитата (inpost @ 14.02.2012 - 12:27) |
Я говорю про include-inj , где в адресной строке можно написать, какой файл подключаетсяЭто тоже считается уязвимостями сайта. |
Цитата (andrey888 @ 14.02.2012 - 13:26) |
Если я правильно тебя понял то вот в этой статье http://irbis-team.com/15/13/2 при проверки расширения файла нужно так же добавить прогонку через basename() ?? |
$file_extension = pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION);
$file_extension = strtolower(pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION));
Цитата (andrey888 @ 14.02.2012 - 13:26) |
И насчет ресайза , можно самый легкий пример в студию ? как я понимаю готовой фунции по ресайзу в пхп нет ? |
function img_resize($src, $dest, $max_side, $quality = 75, &$error){
if(!file_exists($src)){
$error = "file_not_exist";
return false;
}
$size = getimagesize($src);
if(!$size){
$error = "getimagesize_failure";
return false;
}
// Определяем исходный формат по MIME-информации, предоставленной
// функцией getimagesize, и выбираем соответствующую формату
// imagecreatefrom-функцию.
$format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
// определяем функцию преобразования в соотвествии с форматом
$icfunc = "imagecreatefrom" . $format;
if (!function_exists($icfunc)){
$error = "not_supported_format";
return false;
}
// ширина и высота выходного фото
$width = $size[0] >= $size[1] ? $max_side : floor($max_side * ($size[0] / $size[1]));
$height = $size[0] <= $size[1] ? $max_side : floor($max_side * ($size[1] / $size[0]));
if(!$i_src = @$icfunc($src)){
$error = "corrupted_file";
return false;
}
$i_dest = imagecreatetruecolor($width, $height);
imagecopyresampled($i_dest, $i_src, 0, 0, 0, 0, $width, $height, $size[0], $size[1]);
$img = imagejpeg($i_dest, $dest, $quality);
imagedestroy($i_src);
imagedestroy($i_dest);
if($img){
if(file_exists($dest)) chmod($dest, 0775);
$error = false;
return true;
}
else{
$error = "imagejpeg_failure";
return false;
}
}