Validece souborů – MIME vs. koncovka
- dEath
- Člen | 39
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)
- dEath
- Člen | 39
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).
- dEath
- Člen | 39
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
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
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
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
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 | 8228
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.