Upload zip file pomocou Nette form
- Michal8245
- Člen | 14
Zdravím, mam jeden menší problém. Ako v nette form obmedzim
používatela aby mohol uploadovat len zip archive?
Skušal som kontrolu na MIME type cez getContentType(), ale problém je ze mi
pokuse o upload zip suboru je tento typ „application/octet-stream“, a tento
isty typ mi priraduje aj napríklad pri textovom.
Chcem sa teda spytat či tu je možnost obmedzenie len na .zip file?
- h4kuna
- Backer | 740
Netestoval jsem ale vyzkoušel bych nahraný soubor předat ZipArchive pro test si ho otevřít a když nevyletí exception tak to bude validní zip soubor.
- vvoody
- Člen | 910
Netvrdím že kontrola koncovky je jediná a dostatočná validačná kontrola, ale z bezpečnostného hľadiska sa ti nestane že nahraný súbor bude spustiteľný, kedže apache rozlišuje práve na základe koncovky, či ide o php script alebo nie. Pre validáciu by som použil spomenutú triedu ZipArchvie. Mime type môže mať rôzne hodnoty, neviem či sa dá spolahnúť na to, že mi od užívateľa nepríde práve taký archív, ktorého mime type nebudem mať uvedený vo validácii.
- nanuqcz
- Člen | 822
paranoiq napsal(a):
a koncovka se snad podvrhnout nedá?!
Při standardním nastavení serveru se podvrhnutím koncovky souboru nemusí programátor z bezpečnostního hlediska IMHO zabývat. Podvhrnutí MIME typu, to už je ale jiná.
Podle mě je tak kontrola přípony souboru daleko bezpečnější, než kontrola MIME typu.
Z toho důvodu mě taky překvapilo (když jsem to naposledy zkoušel), že
u addUpload()
nefunguje addRule(FORM::PATTERN)
$form->addUpload('avatar', 'Obrázek')
->addRule(FORM::PATTERN, 'Soubor musí být typu PNG', '\\.png$')