Controleren of file afbeelding is

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Pim -

Pim -

20/09/2010 20:46:09
Quote Anchor link
Wat is er mis met het checken van de extensie? Zo wordt toch bepaald of het door PHP geïnterpreteerd wordt of niet?
Gewijzigd op 20/09/2010 21:34:04 door Pim -
 
PHP hulp

PHP hulp

22/12/2024 20:19:14
 
Crude Oil

Crude Oil

20/09/2010 20:54:36
Quote Anchor link
Ik zeg dat het niet altijd veilig is
 
Pim -

Pim -

20/09/2010 20:55:07
Quote Anchor link
In welke situaties niet dan?
 
Synaps Framework

Synaps Framework

20/09/2010 21:00:28
Quote Anchor link
doordat mensen bijvoorbeeld evil.php.jpg uploaden Pim.
 
Pim -

Pim -

20/09/2010 21:02:24
Quote Anchor link
Ja maar dat wordt toch nooit door PHP geïnterpreteerd en is dus toch ongevaarlijk?
 
Noppes Homeland

Noppes Homeland

20/09/2010 21:15:48
Quote Anchor link
Het maak niet uit wat voor extensie een bestand heeft - in een file kan php code verborgen zitten -. Je dient stil te staan bij het feit dat men z'n file kan uploaden en dat met een hack die file wel degelijke door de php parser gehaald kan worden, met alle gevolgen van dien.
 
Pim -

Pim -

20/09/2010 21:21:53
Quote Anchor link
Maar dan ben je afhankelijk van andere zwakheden in het systeem. Op zich is php code in een afbeelding toch niet erg?
 
Synaps Framework

Synaps Framework

20/09/2010 21:28:12
Quote Anchor link
Wat ben jij koppig zeg. Natuurlijk is het niet echt dat je een bestand upload met vieze php code erin upload. Je website is immer waterdicht en dat bestand zal nooit door een andere hack benaderd kunnen worden.
 
Arjan -

Arjan -

20/09/2010 21:29:26
Quote Anchor link
Voorbeeld:

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
<?php

$extensies
= array('jpg','jpeg','gif','bmp');

if($_SERVER['REQUEST_METHOD'] == 'POST') {

    if(trim($_FILES['bestand']['name']) != '') {
    
        $extensie = pathinfo($_FILES['bestand']['name'], PATHINFO_EXTENSION);
        $tijdelijk_bestand = $_FILES['bestand']['tmp_name'];
        
        if(!in_array($extensie,$extensies)) {
        
            echo 'Het bestand heeft niet de juiste extensie!';
        
        }
elseif(!getimagesize($tijdelijk_bestand)) {
        
            echo 'Het is geen afbeelding!';
        
        }
else {
        
            echo 'Alles ok';
        
        }
    
    }
else {
    
    echo 'Geen bestand geselecteerd!';
    
    }


}

?>
Gewijzigd op 20/09/2010 21:38:04 door Arjan -
 
Pim -

Pim -

20/09/2010 21:32:53
Quote Anchor link
Wat worden we toch weer fijn snel persoonlijk...
 
Crude Oil

Crude Oil

20/09/2010 21:35:19
Quote Anchor link
jongens, blijf rustig. Neem eens een glas melk en komt tot rust
 
Pim -

Pim -

20/09/2010 21:37:28
Quote Anchor link
Ik was slechts nieuwsgierig waarom deze voorzorgsmaatregelen nodig zijn.
 
Arjan -

Arjan -

20/09/2010 21:43:24
Quote Anchor link
Een extensie zegt helemaal niets over het bestandstype (mime type, etc.). Een simpel persoon kan een extensie veranderen van bijvoorbeeld .php naar .jpg. Wanneer je dan checkt op extensie zal deze jpg teruggeven. Op het eerste gezicht is dit goed, echter bestaat het bestand niet uit een geldige afbeelding maar uit een php code.

Hierdoor krijg je een niet werkende afbeelding en zullen er dus foutmeldingen (server side en / of client side) ontstaan, en dit wil je niet.

Met getimagesize kan je controleren of het een geldige afbeelding is (dit is niet 100% waterdicht, maar het komt er wel dichtbij in de buurt). Wanneer deze false teruggeeft weet je 99% zeker dat het geen afbeelding is (wel is het aan te raden om getimagesize alleen lokaal te gebruiken aangezien sommige websites hotlinking, etc. hebben uitgeschakeld).

En een bestand door de php parser halen (wat overigens volgens mij helemaal niet gebeurd) zal je extensie niet corrigeren.
Gewijzigd op 20/09/2010 21:43:59 door Arjan -
 

20/09/2010 22:16:10
Quote Anchor link
Verder was er vroeger wel een bug dat gif bestanden wél werden geparst door de php interperter. Je kunt dus nooit voorzichtig genoeg zijn.
 
Jelmer -

Jelmer -

20/09/2010 22:44:30
Quote Anchor link
Aah, het verschil tussen AddHandler en AddType in Apache. De ene voert PHP op alle bestanden uit ongeacht de extensie die je opgeeft, de ander houdt zich wel aan die extensie. Die ene is een feestje met jpeg plaatjes met PHP code in de mime attributen >:)
 
Pim -

Pim -

20/09/2010 22:51:32
Quote Anchor link
Kan je dat toelichten?
 
Niek s

niek s

20/09/2010 22:51:48
Quote Anchor link
Ben laatst nog op een systeem bij ons een perl script tegengekomen met .jpg als extensie, maar ook een jpg mime type.
Dit script ging dan een kernel root exploit downloaden van een remote host, gelukkig kregen ze t script niet gedraaid en was de kernel up to date ;)
Hulde aan updates
 
Jelmer -

Jelmer -

20/09/2010 23:10:55
Quote Anchor link
Pim de Haan op 20/09/2010 22:51:32:
Kan je dat toelichten?


Het verschil tussen addtype en addhandler was volgens mij dat eentje ook uitgevoerd werd wanneer de php extensie die de laatste extensie in de bestandsnaam was. Bijvoorbeeld test.php.taart.jpg zou dan worden geparsed. Ik weet de details niet meer, maar kon nog wel iets opgoogelen.
 
Crude Oil

Crude Oil

22/09/2010 17:29:37
Quote Anchor link
Allemaal bedankt voor jullie hulp en meedenken :)
 

Pagina: « vorige 1 2



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.