Cookies op Tweakers

Tweakers is onderdeel van DPG Media en maakt gebruik van cookies, JavaScript en vergelijkbare technologie om je onder andere een optimale gebruikerservaring te bieden. Ook kan Tweakers hierdoor het gedrag van bezoekers vastleggen en analyseren. Door gebruik te maken van deze website, of door op 'Cookies accepteren' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt? Bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

Image wordt direct in de root-folder geupload

Pagina: 1
Acties:

Vraag


  • RobEindhoven
  • Registratie: augustus 2018
  • Laatst online: 14-02 12:43
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


  • RobIII
  • Registratie: december 2001
  • Laatst online: 13:31

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

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.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • 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


  • RobEindhoven
  • Registratie: augustus 2018
  • Laatst online: 14-02 12:43
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...

  • AW_Bos
  • Registratie: april 2002
  • Laatst online: 12:48

AW_Bos

Waar ga je heen? ☀

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]

Waar ga je heen?


  • 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


  • Standeman
  • Registratie: november 2000
  • Laatst online: 18-06 14:15

Standeman

Moderator Witgoed / General Chat

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:

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

Pagina: 1


Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Microsoft Xbox Series X LG CX Google Pixel 5a 5G Sony XH90 / XH92 Samsung Galaxy S21 5G Sony PlayStation 5 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True