Veilig met plaatjes onderhandelen
Ongetwijfeld zullen er meer topics over dit onderwerp bestaan. Nou ben ik van plan om de belangrijkste valkuilen over "plaatjes hack" proberen in te schatten met deze topic en zo een oplossing proberen te bedenken.
Ik ben momenteel bezig met een plaatjes upload systeem voor een forum. Zoals jullie wel weten kunnen bestanden dat door gebruikers afkomstig van het net worden upgeload best wel onveilig zijn en moet er uitgekeken worden om een of andere hack te voorkomen.
Vroeger heeft vBulletin hier ook last van gekregen. Plaatjes kunnen een meta-data bevatten. Wanneer deze bewerkt worden in een of andere programmeertaal zoals php o.i.d. en daarna uitgevoerd kan worden door dat er ergens zich een programmeer lek bevindt op de site kan het erg nadelig uitkomen.
Ik herinner me dat phphulp in het verleden ook last gekregen had doordat er een gebruiker was dat virus in zijn plaatje had toegevoegd. Hierdoor kreeg bijna iedereen zijn virus scanner voor zijn neus.
Hier is nog een voorbeeld van Local File Inclusion Tutorial.
--
Mijn vragen tot nu toe luidt als volgt:
- Wordt een meta gegeven nog intact gehouden wanneer ik een plaatje verander van vorm, kleiner of groter maak?
- En kan ik meta gegevens inlezen uit een plaatje en deze zo nodig onschadelijk maken door het verder aan te passen?
- Is het handig wat phphulp heeft? Elk plaatje wordt gecontroleerd lijkt wel door image.php. Nadeel is dat hierdoor geanimeerde plaatjes niet meer werken.
Verder zijn tips en/of aanvullingen welkom.
Bumpjhe..
Is er echt niemand die ideeën heeft?!
Hoe dan?
Kijk hier eens naar
class.upload.php: http://www.verot.net/php_class_upload.htm
Die klasse bevat goeie image bewerking.
Ik denk dat je al veel kan doen door het mime-type van je bestand te checken. Van die meta-data heb ik ook wel eens gehoord. Vooral voor zorgen dat je map waar die bestanden in komen geen uitvoer-rechten heeft, denk ik. Verdere beveiliging hier tegen zal je moeten zoeken op Google, gok ik...
Je kunt fileinfo op een plaatje loslaten en kijken of je hem met bijvoorbeeld GD kan openen. Dan ben je er wel redelijk zeker van dat het niet een verkeerd plaatje is.