PHP Uploaden werkt niet goed

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- Raoul -

- Raoul -

06/06/2010 22:56:45
Quote Anchor link
Hoi.

Ik heb een site waarbij een upload systeem zit. Nu heb ik een probleem: ik kan zomaar PHP bestanden uploaden terwijl dat niet mag.

Mijn code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php

 //This line assigns a random number to a variable. You could also use a timestamp here if you prefer.
 $ran = rand () ;

 //This takes the random number (or timestamp) you generated and adds a . on the end, so it is ready of the file extension to be appended.
 $ran2 = rand () ;
$target = "./images/";
  $target = $target . $ran2.$ran.$ext;
 $target = $target . basename( $_FILES['uploaded']['name']) ;
 
 //This is our limit file type condition
 if ($_FILES['uploaded']['type'] == "text/php")
 {

 die("No PHP files<br>");
 }

 
 if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target))
 {

 echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded";
 }

 else
 {
 echo "Sorry, there was a problem uploading your file.";
 }

 ?>
 
PHP hulp

PHP hulp

21/12/2024 15:46:07
 
Ivo K

Ivo K

07/06/2010 08:25:20
Quote Anchor link
"text/php" is niet het goede file type van een php file naar ik weet. Ik ben niet 100% zeker maar volgens mij was het "application/octet-stream". Overigens lijkt het me geen gek idee om gewoon een array met verboden extensies te maken en daar vervolgens op te controleren.
 

07/06/2010 09:46:53
Quote Anchor link
Niet checken op mime type in de array $_FILES['bestand']['type']. Deze waarde wordt door de browser gezet en is dus niet te vertrouwen. Zie ook features.file-upload.post-method.
Afhankelijk van wat je wilt, is het sowieso handig om inderdaad op extensie van het bestand te kijken. Zie ook hier verder op phphulp, laatste week zijn er een aantal topics over geweest.
 
Chris -

Chris -

07/06/2010 09:55:24
Quote Anchor link
Zoals bovenstaand, met als toevoeging dat je moet kijken naar de absolute extensie, en vervolgens kijken of je de grootte van een plaatje kan krijgen. Op die manier limiteer je de risico dat je bestanden upload die niet mogen ;-)
 
- Raoul -

- Raoul -

07/06/2010 17:32:04
Quote Anchor link
Nu heb ik dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
include_once('need.php');
if ($_GET['actie'] == "avatar"){
 //This line assigns a random number to a variable. You could also use a timestamp here if you prefer.
 $ran = rand () ;

 //This takes the random number (or timestamp) you generated and adds a . on the end, so it is ready of the file extension to be appended.
 $ran2 = rand () ;
$target = "./img/userpics";
  $target = $target . $ran2.$ran.$ext;
 $target = $target . basename( $_FILES['uploaded']['name']) ;
 
 //This is our limit file type condition
 if (!$_FILES["file"]["type"] == "image/gif" or !$_FILES["file"]["type"] == "image/bmp" or !$_FILES["file"]["type"] == "image/png" or !$_FILES["file"]["type"] == "image/jpeg")
 {

 die("<div id='error'><h1>Alleen GIF, BMP, PNG en JPG/JPEG bestanden zijn toegelaten.</h1></div>");
 }

 
 if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target))
 {

//ok
 echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded";
 }

 else
 {
 echo "<div id='error'><h1>Er was een probleem bij het uploaden van het bestand.</h1></div>";
 }

}

 ?>


En ik kan niets meer uploaden :S
 
Noppes Homeland

Noppes Homeland

07/06/2010 19:24:48
Quote Anchor link
dood gaan doe je maar 1 keer in je leven en vooral niet tijdens het uitvoeren van een script, pas fatsoenlijke foutafhandeling toe.

voor de rest vergeet je
http://www.php.net/isset
$_FILES['file']['error']

en die controle op type is niet goed, gebruik
http://www.php.net/manual/en/function.finfo-open.php
of
http://www.php.net/manual/en/function.exif-read-data.php

hoewel je natuurlijk nooit voor de volle 100% erop kan vertrouwen maar het is in ieder geval beter dan wat je nu gebruikt.
 
P Lekensteyn

P Lekensteyn

07/06/2010 19:31:53
Quote Anchor link
Niet zo raar.
Jij zegt:

als:
type is niet image/gif
OF
type is niet image/bmp
OF
type is niet image/png
dan doodgaan

Dat is dus altijd. Als de type image/gif is, dan is het niet image/bmp, en dan stopt het script.
Je moest dus AND gebruiken.

Met type kun je niks, controleer liever op extensie.
 
Noppes Homeland

Noppes Homeland

07/06/2010 20:20:28
Quote Anchor link
De extensie zegt ook niets over wat voor soort fole je voor de kiezen hebt, dus dat is zeer zeker geen optie.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.