Validece souborů – MIME vs. koncovka

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

Ahoj,

co si myslíte o validaci podle koncovky souboru? Mám napsanou komponentu, která standardně využivá validaci inputu pro soubory podle MIME-TYPE, ale chtěl bych, aby se validovalo ještě před odesláním a JavaScript nemá přístup (zatím) k souborovému systému.

Samozřejmě, pokud by soubor prošel, PHP by ověřilo ještě podle MIME-TYPE, takže by falešné přepisování koncovky stejně soubor odfiltrovalo. Jinou metodu ještě před odesláním neznám, kromě ActionScript to jinak udělat snad ani nejde. Nejsem si jist, ale vím, že JavaScript může získat např. velikost souboru.

Nebo je dobré řešení použít JavaScriptem upravený formulář, který má přesně dané typy souborů (podle koncovky) a jiné vybrat prostě nejde :). To je podle mě asi nejlepší řešení.

Co si o tom myslíte? Je to použitelné řešení?

Editoval dEath (9. 6. 2010 23:03)

despiq
Člen | 320
+
0
-

me osobne to porad prijde jako naprosto spolehliva cesta, zavisi to ale na typu uzivatelu, noa taky to osetrit proti nejakymu utoku i kdyz to ani nevim jestli by to nejak slo

dEath
Člen | 39
+
0
-

despiq napsal(a):

me osobne to porad prijde jako naprosto spolehliva cesta, zavisi to ale na typu uzivatelu, noa taky to osetrit proti nejakymu utoku i kdyz to ani nevim jestli by to nejak slo

ano, je to univerzální spolehlivá cesta, ale já bych rád použil nějaké fast user-friendly řešení, u kterého by uživatel nemusel při uploadu nějakého souboru příliš dlouho čekat, aby zjistil, že soubor je neplatný a musel opět nahrávat např. jiný a opět čekat. Omezení by samozřejmě bylo i na straně PHP, jako finální validace souboru – což je opravdu nutnost (takže by prošly opravdu pouze relevantní soubory a u nějakého háčku by to stejně prostě vyhodilo error).

Ola
Člen | 385
+
0
-

Kontrola jen pomocí MIME typu je nebezpečná.

dEath
Člen | 39
+
0
-

Ola napsal(a):

Kontrola jen pomocí MIME typu je nebezpečná.

a podle čeho? mě napadlo právě využít toho upraveného formuláře pomocí JavaScriptu a následně přes PHP MIME TYPE. Jiné možnosti PHP pro validaci souborů neznám a ani si nejsem jistý, jestli nějaké jsou. Nikdy jsem o jiném neslyšel.

srigi
Nette Blogger | 558
+
0
-

dEath napsal(a):

Ola napsal(a):

Kontrola jen pomocí MIME typu je nebezpečná.

a podle čeho? mě napadlo právě využít toho upraveného formuláře pomocí JavaScriptu a následně přes PHP MIME TYPE. Jiné možnosti PHP pro validaci souborů neznám a ani si nejsem jistý, jestli nějaké jsou. Nikdy jsem o jiném neslyšel.

Ola asi narazal na to, ze MIME typ je mozne podvrhnut

DocX
Člen | 154
+
0
-

Asi úplně nejneprůstřelnější validace je podle mě ten soubor na serveru prostě otevřít něčím, co s tím tipem pracuje. Třeba JPEG obrázek načíst pomocí imagecreatefromjpeg apod. Těžko říct jak s Wordama, MP3kama apod, ale myslím, že i pro to existují buď rozšíření do PHP nebo možná i přímo knihovny napsané v PHP. No a jak validovat na straně klienta javascriptem, asi jen pomocí koncovky. U těch obrázků by to možná šlo vytvořením img elementu a kontrolou zda je OK. Jinak co se sice nikomu moc nechce, ale je to asi jediný způsob jak to udělat pro uživatele nejkomfortnějš je flash či něco jiného podobného typu (java, silverlight,… i když ty zpravidla nejsou tak rychle načtený)

Jan Tvrdík
Nette guru | 2595
+
0
-

Asi úplně nejneprůstřelnější validace je podle mě ten soubor na serveru prostě otevřít něčím, co s tím tipem pracuje. Třeba JPEG obrázek načíst pomocí imagecreatefromjpeg apod.

Mýlíš se. I zcela validní obrázku může obsahovat PHP kód. Jediné, na čem skutečně záleží je koncovka, protože podle té se řídí server (tj. obrázek z koncovkou *.php je nebezpečnější než php skript s koncovkou *.jpg).

DocX
Člen | 154
+
0
-

Jan Tvrdík napsal(a):

Asi úplně nejneprůstřelnější validace je podle mě ten soubor na serveru prostě otevřít něčím, co s tím tipem pracuje. Třeba JPEG obrázek načíst pomocí imagecreatefromjpeg apod.

Mýlíš se. I zcela validní obrázku může obsahovat PHP kód. Jediné, na čem skutečně záleží je koncovka, protože podle té se řídí server (tj. obrázek z koncovkou *.php je nebezpečnější než php skript s koncovkou *.jpg).

Jasně, pokud jde o to, jestli to server spustí jako skript nebo jen odešle, tak to jo. A i o prevenci na straně klienta. Většina desktopů se při otevírání (spouštění) souborů také řídí koncovkou.

Já měl na mysli jak ověřit, zda soubor je skutečně to co má být, abych když počítám na webu někde s obrázkem tam nedostal buhvico, i když by to nejhur asi jen udělalo bilej rameček.

David Grudl
Nette Core | 8140
+
0
-

dEath napsal(a):

co si myslíte o validaci podle koncovky souboru? Mám napsanou komponentu, která standardně využivá validaci inputu pro soubory podle MIME-TYPE, ale chtěl bych, aby se validovalo ještě před odesláním a JavaScript nemá přístup (zatím) k souborovému systému.

Tohle v HTML4 nelze udělat.