Volgendes problem, ich habe bei meinem Forum, wie bei allen Foren das ja so ist ein Avatar upload.
Nur ist uns aufgefallen, das man dort auch pics hochladen kann in den Bösartiger Code versteckt ist.
Wie kann man so eine Prüfung einbauen ob das pic (.gif, .jpg, .png) auch wirklich ein pic ist?
Hier mal der code der Datei:
Nur ist uns aufgefallen, das man dort auch pics hochladen kann in den Bösartiger Code versteckt ist.
Wie kann man so eine Prüfung einbauen ob das pic (.gif, .jpg, .png) auch wirklich ein pic ist?
Hier mal der code der Datei:
PHP-Code:
<?php
if ($USER['id']!='' && $USER['id']!=0) {
include_once("login/inc.nav_user.php");
if (isset($_POST['action'])) $ACTION=$_POST['action'];
else $ACTION='view';
if ($config['avatar_eod']!=1 && $config['avatar_eod']!=2) {header
("location: include.php?event=23&PHPKITSID=".session_id()); exit();}
elseif ($ACTION==$_POST['cancel'])
{header("location: include.php?path=login/getavatar.php&PHPKITSID=".session_id()); exit();}
elseif (isset($_REQUEST['upload'])) {
if($ACTION==$_POST['upload_action'] && is_uploaded_file($_FILES['upload_pic']['tmp_name'])) {
if (!$avatar_size=getimagesize($_FILES['upload_pic']['tmp_name'])) unset($avatar_size);
else {
if ($avatar_size[2]==1) $ext='.gif';
elseif ($avatar_size[2]==2) $ext='.jpg';
elseif ($avatar_size[2]==3) $ext='.png';
else unset($ext);
}
if (isset($ext) && isset($avatar_size)) {
$filesize=$_FILES['upload_pic']['size'];
$filename='avauser_'.$USER['id'].$ext;;
if (($config['avatar_height']<$avatar_size[1]) || ($config['avatar_width']<$avatar_size[0])) $error=1;
elseif($filesize<($config['avatar_size']*1024) && $filesize!=0) {
$UPLOAD=new UPLOAD();
$uploadreturned=$UPLOAD->images($_FILES['upload_pic'],$config['avatar_path'],$filename);
if ($uploadreturned[0]==TRUE) {
header("location: include.php?path=login/extoption.php&setavatar=".$filename."&PHPKITSID=".session_id()); exit();
}
else $error=4;
}
else $error=2;
}
else $error=3;
header("location: include.php?path=login/getavatar.php&upload&error=".$error."&PHPKITSID=".session_id()); exit();
}
else {
if (isset($_REQUEST['error'])) $error=$_REQUEST['error'];
if ($error==1) eval ("\$avatar_message= \"".getTemplate("getavatar_upload_error1")."\";");
elseif ($error==2) eval ("\$avatar_message= \"".getTemplate("getavatar_upload_error2")."\";");
elseif ($error==3) eval ("\$avatar_message= \"".getTemplate("getavatar_upload_error3")."\";");
else eval ("\$avatar_message= \"".getTemplate("getavatar_upload_message")."\";");
eval ("\$site_body.= \"".getTemplate("getavatar_upload")."\";");
}
}
else {
$dir=$config['avatar_path'];
$width=1;
$row='odd';
$a=opendir($dir);
while ($datei=readdir($a)) {
if (strstr($datei,"avatar") || ($USER['status']=='member' && strstr($datei,"avamember")) ||
($USER['status']=='mod' && (strstr($datei,"avamod") || strstr($datei,"avamember"))) || ($USER['status']=='admin' &&
(strstr($datei,"avaadmin") || strstr($datei,"avamod") ||
strstr($datei,"avamember")))) {
if ($width==4) {
eval ("\$avatar_list.= \"".getTemplate("getavatar_rowbreak")."\";");
$width=1;
$row=rowcolor($row);
}
if (!$avatar_dimension=@getimagesize($dir."/".$datei)) unset($avatar_dimension);
eval ("\$avatar_list.= \"".getTemplate("getavatar_list")."\";");
$width++;
}
}
$cs=4-$width;
if ($cs>0) eval ("\$avatar_list.= \"".getTemplate("getavatar_lastrow")."\";");
closedir($a);
if ($config['avatar_eod']==2) eval ("\$avatar_uploadlink= \"".getTemplate("getavatar_uploadlink")."\";");
eval ("\$site_body.= \"".getTemplate("getavatar")."\";");
}
}
else {header("location: include.php?event=1&PHPKITSID=".session_id()); exit();}
?>
Kommentar