21. april 2004 - 12:27Der er
6 kommentarer og 2 løsninger
Sikkerhed ved billedupload
Jeg har en funktion, hvor folk kan uploade billede på en side. For at sikre at der ikke uploades andet end billederne, har jeg lavet en forespørgsel, der sikrer at filerne ender på jpg eller gif og at de ikke fylder mere end 100kb. Men man kan jo lave filnavnet om på f.eks. en virus og dermed uploade den. Mit spørgsmål er så, om virussen kan bruges, når den er af et forkert filnavn, eller om den bare, når jeg går ind på min 'vis billede' side, viser at den ikke kan åbne billedet og der ikke sker mere...
teoretisk kan det godt lade sig gøre, men det ville kræve kraftig modifikation af koden, da gif og jpg ikke umiddelbart er exekverbar kode. Det ville kræve at virusen blev kodet til at sprede sig gennem billedbehandlingsprogrammer. Jeg mener ikke deter realistisk at forestille sig at de skulle ske
du kan bruge http://dk.php.net/manual/en/function.exif-imagetype.php så slipper de ikke igennem. Viruset er skadesløst, hvis det ikke kan aktiveres på serveren. Og det kan en gif mig bekendt ikke :-). Et billedprogram ekserkverer ikke filen men læser den blot.
riversen -> har selv brugt exif_imagetype i et script jeg har lavet (thumbnail generering) - MEN, det er meget få steder hvor exif-funktionerne er compilet med i PHP, da de ikke er i standard lib. - getimagesize() er dog en standard (gd?) funktion, og returenere også image-type...
dea_pg: det ved jeg, men i mit link linkes der også til getimagesize... exif er noget hurtigere som der er skrevet... derfor linker jeg til den. Virker det ene ikke, er der link til det andet.
Det er noget bedre at tjekke filendelsen end det er bare at tjekke MIME typen, som getimagesize() og exif_imagetype() ser ud til at gøre. Man kan meget nemt indsætte de få bytes i starten af en random.exe fil og så uploade den uden problemer.
Altså; At tjekke filendelsen burde være nok, men for en sikkerheds skyld kan du også tjekke MIME typen med en af de ovennævnte funktioner.
Man kan stadig godt konstruere den så den er eksekverbar. Det vil dog ikke umiddelbart være muligt at få en eksekveret på serveren, ikke med mindre der er andre sikkerhedshuller i scriptet der tillader det.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.