Beste,

Ik ben begonnen aan een upload scriptje,
maar ik weet dat zo, veel sites gehackt worden,
ik zou graag een beveileging maken dat alleen img,png doorlaat,
dit word vaak omzeilt met bv tamper data dan uploaden de hackers een bestand dat eigenlijk bv .php is maar zeggen via de headers dat dit een .jpg is,
hoe kan ik me hier tegen beveiligen,
had al iets gevonden over mime types, maar weet niet hoe dit te doen,
misschien nog iemand een idee?
[google]MIME type upload security[/google]. Lukt dat niet?
nee, niet echt..
staat geen duidelijke informatie op die search,
heb al verder dan die search gezocht, maar vind niet veel informatie

            $ext = substr($_FILES['img']['name'], strpos($_FILES['img']['name'],'.'), strlen($_FILES['img']['name'])-1);
			// Check if the filetype is allowed, if not DIE and inform the user.
			if(!in_array($ext,$allowed_filetypes)){
				die('The file you attempted to upload is not allowed.');
			}

dat is wat ik op dit moment heb,
maar ik vrees dat dit niet genoeg is
Zoiets misschien?

<?PHP

# Errors
error_reporting(E_ALL);

# File types
$Filetype = array('png', 'x-png');

# Mime types
$Mimetype = array('image/png', 'image/x-png');

# Kijken of er gepost wordt
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
# Extentie van het bestand
$Extensie = strtolower(substr($_FILES['uploadVeld']['name'], -3));

# Kijken of file type is toegestaan
if(in_array($Extensie, $Filetype))
{
# Kijken of mime type is toegestaan
if(in_array($_FILES['uploadVeld']['type'], $Mimetype))
{
# Alles is ok
echo 'Alles klopt.';
}
else
{
# Mime type is niet toegestaan
echo 'Dit bestand is niet toegestaan.';
}
}
else
{
# File type is niet toegestaan
echo 'Dit bestand is niet toegestaan.';
}
}

?>
thnx enorm!!
ik vermoed als ik meerdere wil toelaten
gewoon toevoegen aan:


$Filetype = array('png', 'x-png');

# Mime types
$Mimetype = array('image/png', 'image/x-png');


zijn er nog gevaren waar ik op voor moet passen als ik het uploaden van bestanden zou toelaten?
Je kan bijvoorbeeld met getimagesize kijken of er wel een width en height is, zoja dan weet je dat het een afbeelding is.

Ook zou je een limiet kunnen stellen voor elk plaatje. in grote bedoel ik dan. (kb)
Nee, je kunt niet vertrouwen op de mimes die in $_FILES zit.
Ook is die extensie check niet juist denk ik.
Ook is die extensie check niet juist denk ik.


Heb je geprobeerd?, ik weet zeker dat die goed werkt.
Daarbij heb ik hem ook nog verteld als je op getimagesize controleerd dan moet het wel een image zijn.

Ben benieuwd hoe jij je files controleerd op type.
Karl schreef op 08.11.2009 21:23
Nee, je kunt niet vertrouwen op de mimes die in $_FILES zit.
Ook is die extensie check niet juist denk ik.


Hoe dan wel??
De extensie check van Mr.Ark lijkt me een goed idee. Als hackers een zogenaamde image uploaden, kunnen ze hier niks mee, aangezien de file nog steeds een extensie als .jpg, .png of wat dan ook heeft. Die kan dus nooit geparsed worden als een php file.

Reageren