09. juni 2005 - 18:45Der er
13 kommentarer og 1 løsning
Problem med filopload og Mozilla
Hej,
Jeg har en side, hvor brugerne gerne skal kunne oploade et brugerbillede. Problemet er at jeg kun har fået det til at virke i IE og ikke i Firefox. Jeg tjekker på filtypen for kun at godkende jpeg og gif. Nogle der har en idé til hvad jeg gørgelt?
$file_dir = "billedmappe";
foreach ($_FILES as $file_name => $file_array) { if ($file_array['size'] <= 204800) { if ($file_array['type'] == 'image/gif' || $file_array['type'] == 'image/pjpeg') { if ($file_array['type'] == 'image/gif') { $filnavn = md5($file_array['name']).'.gif'; } else { $filnavn = md5($file_array['name']).'.jpg'; }
if (is_uploaded_file($file_array['tmp_name'])) { $brugerid = intval($_POST[skjultBrugerID]); $tid = time();
$ins = "DATABASE-KALD"; $ins_res = mysql_query($ins) or die(mysql_error());
if ($ins_res == 1) { move_uploaded_file($file_array['tmp_name'], "$file_dir/$filnavn") or die ("Couldn't copy");
Her er en der har det modsatte problem. Du kan sikkert gætte hvad problemet er... ;)
Men du skal *ikke* stole på den medsendte type. Enhver hacker kan sende en .php fil som om det var et gifbillede. Du *skal* checke på extension. Men det er ok også at checke typen.
Jo, og derfor, nu det er et billede som skal uploades, kan du jo så gi' filen det filnavn som hører til "typen", gif, jpg, png Eller, ihvertfald for de filtyper som getimagesize() "genkender"
Nåååå sådu mener at jeg først tjekker på om MIME typen er korrekt. Hvis den så er det, tjekker jeg extension. Hvis den er rigtig oploader jeg, men hvis extension er forkert (Og MIME type rigtig) skal jeg tildele filen det rigtige extension?
Det er ikke noget problem at extension ikke passer, for tillader du kun .jpg og .gif kan en hacker ikke udføre kode på serveren. Det er li'som det vi skal undgå.
Altså: Du skal tjekke extension. Du kan checke MIME-type. Hvis der er noget galt i extension (og evt MIME-type), skal du blot stoppe.
Har jeg´ikke ret i, at mit scropt er godt nok, nå nu jeg, når jeg har tjekket om MIME typen er 'rigtig' selv giver filen et navn der enten ender på .gif eller .jpg? Er jeg så ikke på den sikre side?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.