Upload zip file pomocou Nette form

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Michal8245
Člen | 14
+
0
-

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?

vvoody
Člen | 910
+
0
-

Podla koncovky, mime type sa myslím že dá aj tak podvrhnúť ak ti ide o bezpečnosť.

h4kuna
Backer | 740
+
0
-

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.

paranoiq
Člen | 392
+
0
-

vvoody napsal(a):

Podla koncovky, mime type sa myslím že dá aj tak podvrhnúť ak ti ide o bezpečnosť.

a koncovka se snad podvrhnout nedá?!

Nette mime type detekuje samo, pokud je nainstalovaná extenze FileInfo

vvoody
Člen | 910
+
0
-

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
+
0
-

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$')
paranoiq
Člen | 392
+
0
-

prostě je třeba řešit oboje – jak spustitelnost (koncovku), tak závadný/nepodporovaný obsah (skutečný typ)