Versio

uploaden van file

Overzicht Reageren

Matthias

Matthias

07/11/2009 16:50:00
Quote Anchor link
Beste,

Ik ben begonnen aan een upload scriptje,
maar ik weet dat zo, veel sites gehackt worden,
ik zou graag een beveileging maken dat alleen img,png doorlaat,
dit word vaak omzeilt met bv tamper data dan uploaden de hackers een bestand dat eigenlijk bv .php is maar zeggen via de headers dat dit een .jpg is,
hoe kan ik me hier tegen beveiligen,
had al iets gevonden over mime types, maar weet niet hoe dit te doen,
misschien nog iemand een idee?
 
PHP hulp

PHP hulp

25/05/2012 17:03:44
Gesponsorde koppelingen:
 
Jesper Diovo

Jesper Diovo

07/11/2009 16:54:00
Quote Anchor link
MIME type upload security. Lukt dat niet?
 
Matthias

Matthias

07/11/2009 19:18:00
Quote Anchor link
nee, niet echt..
staat geen duidelijke informatie op die search,
heb al verder dan die search gezocht, maar vind niet veel informatie
Gewijzigd op 01/01/1970 01:00:00 door Matthias
 
Matthias

Matthias

08/11/2009 20:12:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
            $ext = substr($_FILES['img']['name'], strpos($_FILES['img']['name'],'.'), strlen($_FILES['img']['name'])-1);
            // Check if the filetype is allowed, if not DIE and inform the user.
            if(!in_array($ext,$allowed_filetypes)){
                die('The file you attempted to upload is not allowed.');
            }

dat is wat ik op dit moment heb,
maar ik vrees dat dit niet genoeg is
Gewijzigd op 01/01/1970 01:00:00 door Matthias
 
Mr.Ark

Mr.Ark

08/11/2009 20:51:00
Quote Anchor link
Zoiets misschien?

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
31
32
33
34
35
36
37
38
39
40
<?PHP

# Errors
error_reporting(E_ALL);

# File types
$Filetype = array('png', 'x-png');

# Mime types
$Mimetype = array('image/png', 'image/x-png');

# Kijken of er gepost wordt
if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    # Extentie van het bestand
    $Extensie = strtolower(substr($_FILES['uploadVeld']['name'], -3));
    
    # Kijken of file type is toegestaan
    if(in_array($Extensie, $Filetype))
    {

        # Kijken of mime type is toegestaan
        if(in_array($_FILES['uploadVeld']['type'], $Mimetype))
        {

            # Alles is ok
            echo 'Alles klopt.';        
        }

        else
        {
            # Mime type is niet toegestaan
            echo 'Dit bestand is niet toegestaan.';
        }
    }

    else
    {
        # File type is niet toegestaan
        echo 'Dit bestand is niet toegestaan.';
    }
}


?>
 
Matthias

Matthias

08/11/2009 21:03:00
Quote Anchor link
thnx enorm!!
ik vermoed als ik meerdere wil toelaten
gewoon toevoegen aan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$Filetype = array('png', 'x-png');

# Mime types
$Mimetype = array('image/png', 'image/x-png');


zijn er nog gevaren waar ik op voor moet passen als ik het uploaden van bestanden zou toelaten?
 
Mr.Ark

Mr.Ark

08/11/2009 21:17:00
Quote Anchor link
Je kan bijvoorbeeld met getimagesize kijken of er wel een width en height is, zoja dan weet je dat het een afbeelding is.

Ook zou je een limiet kunnen stellen voor elk plaatje. in grote bedoel ik dan. (kb)
 
Karl Karl

Karl Karl

08/11/2009 21:23:00
Quote Anchor link
Nee, je kunt niet vertrouwen op de mimes die in $_FILES zit.
Ook is die extensie check niet juist denk ik.
 
Mr.Ark

Mr.Ark

08/11/2009 21:25:00
Quote Anchor link
Quote:
Ook is die extensie check niet juist denk ik.


Heb je geprobeerd?, ik weet zeker dat die goed werkt.
Daarbij heb ik hem ook nog verteld als je op getimagesize controleerd dan moet het wel een image zijn.

Ben benieuwd hoe jij je files controleerd op type.
 
Matthias

Matthias

08/11/2009 22:54:00
Quote Anchor link
Karl schreef op 08.11.2009 21:23:
Nee, je kunt niet vertrouwen op de mimes die in $_FILES zit.
Ook is die extensie check niet juist denk ik.


Hoe dan wel??
 
Marco

Marco

08/11/2009 22:58:00
Quote Anchor link
De extensie check van Mr.Ark lijkt me een goed idee. Als hackers een zogenaamde image uploaden, kunnen ze hier niks mee, aangezien de file nog steeds een extensie als .jpg, .png of wat dan ook heeft. Die kan dus nooit geparsed worden als een php file.
 
Mr.Ark

Mr.Ark

08/11/2009 23:16:00
Quote Anchor link
Net zoals ik zei, hij wilt alleen images, controleer met getimagesize of er een width en een height is. Alleen een image zal dit hebben.
 
Matthias

Matthias

09/11/2009 17:28:00
Quote Anchor link
idd ga ik al zeker toepassen..
is dat voldoende? of nog gevaren?
 
Marco

Marco

09/11/2009 19:18:00
Quote Anchor link
Je zult zo redelijk veilig zitten. Het is, zoals Mr.Ark al zei, bijna niet mogelijk om nu nog valse files te uploaden
 
Matthias

Matthias

09/11/2009 21:23:00
Quote Anchor link
Oké dan zal ik het daar voorlopig op houden,
thnx voor de help!
 



Overzicht Reageren