Autor | Zpráva | ||
---|---|---|---|
phobos9007 Profil |
#1 · Zasláno: 30. 1. 2010, 12:18:29 · Upravil/a: phobos9007
Ahoj,
Tohle je spíše teoretický článek, ale rád bych si vše vyjasnil. Jak vy například řešíte upload ve svých projektech, které vytváříte? Vím dobře, že jak pro <5.3.0 mime_content_type tak i pro >=5.3.0 finfo je potřeba příslušné rozšíření. Jak je to na českých hostinzích, případně na zahraničních? Budu rád za každý názor ohledně této problematiky, používá ještě někdo něco jiného? Co byste mi doporučovali? Děkuji |
||
Carrot Profil * |
#2 · Zasláno: 30. 1. 2010, 12:58:38
phobos9007:
„Jak vy například řešíte upload ve svých projektech, které vytváříte?“ Tak, že MIME typ z obsahu neanalyzujeme. Většinou to není potřeba. |
||
AM_ Profil |
#3 · Zasláno: 30. 1. 2010, 13:18:47
pokud toto rozšíření není k dispozici, není tak složité si sám napsat převodí tabulku přípona->mime typ. Jak moc rozsáhlou ji uděláš už je na tobě.
|
||
phobos9007 Profil |
#4 · Zasláno: 30. 1. 2010, 19:25:44
Carrot:
„Většinou to není potřeba“ Jak pak ošetříš, aby tam někdo neuploadnul skript, když na FILES posílaný z prohlížeče se nedá vůbec spolehnout? A co třeba když chceme nahrát jen obrázky, písničky, atd.? AM: Vzhledem k tomu že přípony se dají snadno podvrhnout, dle mého názoru je to na nic |
||
AM_ Profil |
#5 · Zasláno: 30. 1. 2010, 19:41:26
Pokud ti jde o to, aby uživatel nemohl nahrát PHP skripty, tak jde právě o přípony :) content-type se souborem není spojen už vůbec nijak; klidně txt souboru můžeš přiřknout při stahování typ "application/octetstream". je několik variant, jak se proti tomu ochránit:
- zakázat PHP v adresáři, kam se uploaduje - zakázat všechny přípony, ve kterých server PHP vyhodnocuje - soubory uploadovat všechny třeba s příponou ".u" a pomocí mod_rewrite nebo nějakého stahovacího PHPka k nim přistupovat pod správným názvem Samotné mime typy nemají s bezpečností nic společného; jde spíš o to, když si návštěvník soubor otvírá/stahuje, aby ho jeho prohlížeč uměl správně zpracovat. |
||
phobos9007 Profil |
#6 · Zasláno: 30. 1. 2010, 19:54:16
Zajímavé, díky ;) takže chceš říct, že výše zmíněné funkce a třídy odvozují MIME z přípony?
|
||
DoubleThink Profil * |
#7 · Zasláno: 30. 1. 2010, 20:01:46
phobos9007:
„Jak pak ošetříš, aby tam někdo neuploadnul skript, když na FILES posílaný z prohlížeče se nedá vůbec spolehnout?“ Není nutné nic ošetřovat. Pro zpracování souboru na serveru je rozhodující jeho přípona. Stačí ji tedy po uploadu podrobit kontrole. Na obsahu nezáleží. |
||
AM_ Profil |
#8 · Zasláno: 31. 1. 2010, 00:12:05
[#6] phobos9007
no ano, jiná informace o typu souboru s ním spojená není :) |
||
imploder Profil |
#9 · Zasláno: 31. 1. 2010, 00:36:14
AM:
„no ano, jiná informace o typu souboru s ním spojená není :)“ To není tak docela pravda. MIME typy souborů závisí i na jejich obsahu, resp. můžou záviset. Když například vytvořím soubor kebule (bez přípony) a napíšu do něj třeba <?php echo "tohle je php skript, ale nemá příponu"; phpinfo(); ?> tak ho správce souborů v GNOME (nautilus) rozezná jako MIME typ Skript PHP (application/x-php). |
||
AM_ Profil |
#10 · Zasláno: 31. 1. 2010, 10:27:32
imploder:
Ano, ale předpokládám, že to zjistí heuristicky (nejspíš z výskytu <?php :) ), ta informace pokud vím ani na linuxu není nikde explicitně uložená. |
||
imploder Profil |
#11 · Zasláno: 31. 1. 2010, 13:23:30 · Upravil/a: imploder
AM:
Explicitně uložená v souboru ta informace není (v tomto případě by ani nemohla, nijak jsem neurčil, že píšu zrovna PHP skript), pokud se neurčí typ podle názvu souboru (ve tvaru "*.přípona"), hledá se shoda s pravidly MIME typu pro obsah souboru (ukázka pro text/x-diff). V PHP to nejspíš bude podobně. EDIT: carrot: j, tak tam je to teda jednosušší |
||
Carrot Profil * |
#12 · Zasláno: 31. 1. 2010, 13:45:09
imploder:
„tak ho správce souborů v GNOME (nautilus) rozezná jako MIME typ Skript PHP (application/x-php)“ Apache se ovšem řídí jen příponami - viz mod_mime:AddType |
||
Časová prodleva: 14 let
|
0