Image wordt direct in de root-folder geupload

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • RobEindhoven
  • Registratie: Augustus 2018
  • Laatst online: 14-02-2021
Ik heb een vraagje,

Momenteel heb ik een Html form waar een gebruiker meerdere foto's kan uploaden. Deze foto's worden via PHP geresized. Hierna wordt hij via move_uploaded_file verplaats naar de folder (images/). Maar hier gaat er iets mis.....want hij upload de foto's naar mijn root folder? Is er iemand die mij kan helpen bij de probleem?

Hier is mijn upload code:

$query = "SELECT id FROM ncr_input ORDER BY id DESC LIMIT 1";
$result = mysqli_query($conn, $query);

$row = mysqli_fetch_row($result);

$ncrnummer = $row[0];

for ($i = 0; $i < count($_FILES['attachments']['name']); $i++) {
$sourcefile = $_FILES['attachments']['tmp_name'][$i];
$endfile = $_FILES['attachments']['name'][$i];
$type = $_FILES['attachments']['type'][$i];
$filepath = "images/" . $endfile;

ResizePicture($sourcefile, $max_width = 500, $max_height = 500, $endfile, $type);

if (move_uploaded_file($endfile, $filepath)) {
$querypictureupload = "INSERT INTO file_upload(ncrnummer,filename) VALUES ('$ncrnummer','$endfile')";
$result = mysqli_query($conn, $querypictureupload);
}
else {
echo "Error";
}
}

Hier de code van mijn ResizePicture:

<?php

function ResizePicture($sourcefile,$max_width, $max_height, $endfile, $type){

switch($type){
case'image/png':
$img = imagecreatefrompng($sourcefile);
break;
case'image/jpeg':
$img = imagecreatefromjpeg($sourcefile);
break;
case'image/gif':
$img = imagecreatefromgif($sourcefile);
break;
default :
return 'Un supported format';
}

$width = imagesx( $img );
$height = imagesy( $img );

if ($width > $height) {
if($width < $max_width) {
$newwidth = $width;
}
else {
$newwidth = $max_width;

$divisor = $width / $newwidth;
$newheight = floor($height / $divisor);
}
}
else {

if($height < $max_height) {
$newheight = $height;
}
else {
$newheight = $max_height;

$divisor = $height / $newheight;
$newwidth = floor($width / $divisor);
}
}

$tmpimg = imagecreatetruecolor( $newwidth, $newheight );

imagealphablending($tmpimg, false);
imagesavealpha($tmpimg, true);

imagecopyresampled( $tmpimg, $img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

switch($type){
case'image/png':
imagepng($tmpimg, $endfile, 0);
break;
case'image/jpeg':
imagejpeg($tmpimg, $endfile, 100);
break;
case'image/gif':
imagegif($tmpimg, $endfile, 0);
break;
}

imagedestroy($tmpimg);
imagedestroy($img);
}
?>

Extra vraagje: Hoe krijg ik mijn code een beetje fatsoenlijk, Zodat jullie het ook kunnen lezen :P

Op internet heb ik gezocht naar oplossingen,

Dit heb ik al geprobeerd:

is_writable($filepath) Hier komt uit dat deze gewoon bereikbaar is!

Alle reacties


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
RobEindhoven schreef op dinsdag 30 oktober 2018 @ 10:02:
Extra vraagje: Hoe krijg ik mijn code een beetje fatsoenlijk, Zodat jullie het ook kunnen lezen :P
Code tags gebruiken.

Als je eens begint met debuggen: Debuggen: Hoe doe ik dat? en ons dan vertelt wat daar uit komt. Verder mag je je post beperken tot relevante(!) code; ergens waar iets met de file gedaan wordt ofzo dus; het daadwerkelijke resizen en andere fluff is niet relevant.

[ Voor 14% gewijzigd door RobIII op 30-10-2018 10:07 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • +4 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Gelukkig is de code te exploiten en zijn website over te nemen en te gebruiken in een botnet of voor ransom.

Vink aan wat van toepassing is:
[ ] Ongeschikt.... stop met wat je doet als je het op het internet wil slingeren.
[ ] Geschikt... ga door als je het alleen op je PC gebruikt als proef projectje.

Ik ga niet detail hier, het internet staat al bomvol genoeg met uitleg en waarschuwingen.

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • RobEindhoven
  • Registratie: Augustus 2018
  • Laatst online: 14-02-2021
Goed bezig DJMaze,

Ja het is niet beveiligd tegen MySQL injectie.....Maar dat is ook niet echt nodig omdat het lokaal op een server draait! Dus prima geschikt! En het probleem met de root folder heb ik ook opgelost.....ik heb een Temp folder aangemaakt waar de foto's in geüpload worden. Daarna worden deze verkleind en terugzet in een nieuwe map. En wordt de temp folder leeg gemaakt.......Probleem opgelost!!!!!!

Maar helaas behandelen ze SQL Injectie pas in leerjaar 3 op het MBO omdat ze dit vreemd genoeg niet als belangrijk onderwerp zien.....eveneens als alle andere beveiligings-technieken. Zelf zal ik er nog wel een keertje induiken...

Acties:
  • 0 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 11:23

AW_Bos

Liefhebber van nostalgie... 🕰️

Of doe niet moeilijk, en gebruik de uploadclass van Verot.net. :p

Verder dien je zeker wel beveiliging tegen SQL-Injectie in te bouwen. Het beschermt je query tegen corrupte en malafide SQL-opdrachten. Vul eens 's-Hertogenbosch in. En bam... Je query gaat onderuit.

Wat foutafhandeling op je mysqli_query kan ook geen kwaad.

[ Voor 10% gewijzigd door AW_Bos op 31-10-2018 11:42 ]

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
RobEindhoven schreef op woensdag 31 oktober 2018 @ 11:37:
Ja het is niet beveiligd tegen MySQL injectie.....
Daar had ik het (nog) niet eens over.
Upload eens een "exploit.php" bestand met je script... ;)

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • Standeman
  • Registratie: November 2000
  • Laatst online: 11:45

Standeman

Prutser 1e klasse

RobEindhoven schreef op woensdag 31 oktober 2018 @ 11:37:
...

Maar helaas behandelen ze SQL Injectie pas in leerjaar 3 op het MBO omdat ze dit vreemd genoeg niet als belangrijk onderwerp zien.....eveneens als alle andere beveiligings-technieken. Zelf zal ik er nog wel een keertje induiken...
Dit zou juist een van de eerste lessen moeten zijn! :X

Ter vermaak:
Afbeeldingslocatie: https://imgs.xkcd.com/comics/exploits_of_a_mom.png

The ships hung in the sky in much the same way that bricks don’t.

Pagina: 1