Autor Zpráva
mikul
Profil
Zdravím.
Tady na diskuzi jsem si našel skript na upload obrázků a trochu si ho podle potřeby upravil.
Vše funguje, až na tohle:
 $obr = explode(".",$_FILES['fotka']['name']);
            if(($obr['1']==("jpg"||"JPG"||"jpeg"||"JPEG")) && ($_FILES['fotka']['size']<=2000000)){
         nějaký kód na následnou úpravu obrázku...


problém je s tím typem souboru. I když to není formát jpg, podmínka to propustí a skript se pokusí obrázek zpracovat jako by to bylo jpg.
I když jsem zkoušel mnoho typů souborů, nikdy mě to nehodilo až na následující else bla bla bla.. tak jak by mělo. Je možné, že jsem přehlédl nějaký detail. Ale hraju si s tím už delší dobu a nevím čím to...
Alphard
Profil
== ("jpg" || atd) je špatně
ale vsázet na příponu je stejně nejisté, lepší je použít funkci getimagesize(), jeden z paramterů, které vrátí, je typ souboru
mikul
Profil
A použít getimagesize() je dostačující? Teď jsem pročítal článek o bezpečnosti uploadu a tam bylo docela zpochybněno i tohle. Mám pocit, že u všeho je napsáno, že je to málo. Jaká kombinace metod je tedy dostačující pro běžné stránky?
Alphard
Profil
nejsem expert na grafické typy, ale zranitelnost po použití getimagesize AFAIK spočítá v tom, že je možné vkládat do obrázku komentáře, které se vyhodnotí jako platný PHP kód
IMHO je na běžné stránky dostatečné zkontrolovat to funkci getimagesize() a zároveň zajistit, ale se fotka neuložila jako foto.php apod.
king26
Profil
doporučuji přečíst článek Jakuba Vrány: http://php.vrana.cz/ukladani-souboru-od-uzivatele.php , pomůže vám :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: