30. december 2003 - 11:27Der er
11 kommentarer og 1 løsning
Fejl ved Header
Følgende kode videresender ikke på noget tidspunkt når jeg bruger header. Jeg har prøvet at oprette en side med <? header("Location: fil.php"); ?> og det virker fint...
<? session_start(); include("dbconnect.php"); error_reporting(E_ALL); $allowedsize = $bannersize*1024; if ($_FILES['imagefile']['type'] == "image/jpeg" || $_FILES['imagefile']['type'] == "image/pjpeg" || $_FILES['imagefile']['type'] == "image/gif"){ if ($_FILES['imagefile']['size'] <= $allowedsize) { if ($debug) { echo "saving banner information to database<br>"; } mysql_query("INSERT INTO sources (path) VALUES ('$banner_url')") or die(mysql_error()); $source = mysql_insert_id(); mysql_query("INSERT INTO banners (user, str, source, dest, aktiv) VALUES ($login_user, '$banner_str', $source, '$banner_dest', 1)") or die(mysql_error()); $banner = mysql_insert_id(); mysql_query("INSERT INTO bannerstat (banner) VALUES ($banner)") or die(mysql_error()); if ($debug) { echo "Success!<br>"; } $data = mysql_query("SELECT id FROM `banners` ORDER BY `id` DESC LIMIT 1"); while ($row = mysql_fetch_array($data)) { $name = $row[id]; if ($_FILES['imagefile']['type'] == "image/jpeg" || $_FILES['imagefile']['type'] == "image/pjpeg") { $name = $name.".jpg"; } elseif ($_FILES['imagefile']['type'] == "image/gif") { $name = $name.".gif"; } } if ($debug) { echo "Copying from temp folder<br>"; } copy ($_FILES['imagefile']['tmp_name'], "$bannerdir$name"); if ($debug) { echo "Success!<br>"; } $banner_url = $bannerdir2.$name; mysql_query("UPDATE sources set path = '$banner_url' where id = $source"); header("Location: user.php"); } else { if ($debug) { echo "redirecting because of banner being too big (< $allowedsize bytes)"; } header("Location: besked.php?besked=5"); exit; } } else { header("Location: besked.php?besked=4"); exit; } ?>
Brug af AI afslører de svagheder, virksomheder allerede har opbygget gennem års cloud-transformation, nye SaaS-løsninger og fragmenterede sikkerhedssystemer.
1) Har du et link? 2) Du ved godt man ikke må udskrive før en header (din $debug tyder på du ved det) 3) Det er usikkert kun at teste på typer som "image/jpeg" osv - enhver middelmådig hacker kan snyde dig og fx uploade en .php som du tror er et billede. Du *skal* også teste på extension!
Og mit punkt 3 er forsåvidt rigtigt nok, men jeg kan nærlæse din kode nu til at du selv sætter ekstension på $name = $name.".gif"; Og dermed kan din bruger ikke lave en .php fil i dit katalog. Dermed er det ikke farligt her. Det er selvfølgelig farligt hvis du bruger det navn hackeren selv kommer med ;)
Underligt... Det virker nogengange og nogengange virker det ikke. Men det virker 100% på min egen server.
Synes godt om
Ny brugerNybegynder
Din løsning...
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.