zarec.. prosimvas, pri uploadu souboru.. je $_FILES['fotka']['size'] pouze informativní? resp. pokud podminkuju velikost souboru pri uploadu timto $_FILES['fotka']['size']>12345 je to bezpecne? neda se to obejit? dik
$_FILES['fotka']['size'] je proměnná, kterou zjistíš velikost souboru po nahrání na server. Sice nezabráníš jeho nahrání (soubor už je na serveru), ale můžeš zvolit další akce, co s tím souborem provedeš (přesunout, nepřesunout, smazat, vypsat hlášku, atd.).
$_FILES['fotka']['size'] udává velikost souboru, který se nahrál na server. Zbytek už si snad domyslíš ...
tak to vypada ze si odpovim sam: Kontrola typu nahrávaného souboru je dalším důležitým bodem na našem seznamu. V proměnné $_FILES['userfile']['type'] sice máme k dispozici typ nahraného souboru, tento typ ale nastavuje klient a může ho mít nastaven špatně, útočník ho navíc může snadno změnit. Lepší je tedy zjistit typ souboru na základě koncovky např. funkcí mime_content_type nebo rovnou na základě obsahu souboru např. funkcí getimagesize nebo mime_content_type.
to same s $_FILES['userfile']['size'] ?
Mrkvo: i když se všude tvrdí, že věřit datům od klienta se nemá (což je dobře), tak tohle už zavání paranoiou.
Pokud ano, tak:
- velikost souboru můžeš zjišťovat pomocí filesize($_FILES['userfile']['tmp_name']);
- typ souboru se v PHP 100% spolehlivě určit nedá (pokud to vážně potřebuješ, tak je dobré přes exec() volat externí program). Nejlepší je uživatelův souboru zabalit do archivu, čímž jej "umrtvíš" a při downloadu jej rozbalit a poslat přímo k uživateli. Pokud půjde o obrázek, tak projít typy (podle omezení PNG, GIF, JPeG, ...)
No tak tedy k tématu odpovím první já:
Ano, na $_FILES['userfile']['size'] se dá spolehnout, protože ho nastavuje až PHP (což neplatí o 'type').