Този код Shell ли е ?

cmsfan

Registered
Имам една ъплоуд форма, има проверки уж само за картинки, но могат да се качват всякакви файлове през нея (стига да им се смени разширението)
Пример: взимам архив, сменям го като jpg формат и се качва без проблем.
Имаше качени няколко шела (откри ги антивирусната), след като свалих папката и наистина не са картинки, дават грешки при отварянето им.
Искам да знам, възможно ли е да се ползват като шелове, при положение, че са с различен формат ?
И ако да, как да го оправя?
 
Нещо подобно е и моето, ето:
Код:
$a = $_FILES['gallerypics']['name'];
$b = explode(".",$a);
$c = count($b);
$d = $b[$c-1];
$e = array(1 => "PNG", 2 => "GIF", 3 => "JPG", 4 => "JPEG");
$formata = strtolower($e[1]);
$formatb = strtolower($e[2]);
$formatc = strtolower($e[3]);
$formatd = $e[1];
$formate = $e[2];
$formatf = $e[3];
if ($d == $formata or $d == $formatb or $d == $formatc or $d == $formatd or $d == $formate or $d == $formatf)
{
$filehash = str_shuffle(md5($_FILES['gallerypics']['name']));
$filea = $filehash.".$d";
move_uploaded_file($_FILES['gallerypics']["tmp_name"], $path2.$filea );
$username = mysql_real_escape_string($_POST['username']);
$file = mysql_real_escape_string($_FILES['file']['name']);
$odobren = "ne";
$opisanie = mysql_real_escape_string($_POST['opisanie']);
$gallerypics = "$path2/$filea";
$date = date("d.m.Y");
 
Мисля, че ако ползваш GD libary за обработването на снимките, няма да успеят да запишат този файл. Защото ще създаде снимката с разширението което ти си избрал при image функцията, а ако е вкаран файл който не е снимка, отново ще се създаде снимка с разширението и тази снимка ще е с черен екран и файла - би трябвало да е невалиден. Ако греша, нека някой ме поправи ...

Функции от GD:
http://www.php.net/manual/en/ref.image.php
 

Back
Горе