iVorIus
13.07.2010, 21:23:55
Witam,
przeczytałem trochę o zabezpieczeniu uploadu przed skryptami/atakami, ale nie jestem pewien, które wybrać. Pytam więc Was, jakie skuteczne zabezpieczenia stosujecie?
Wywnioskowałem, że najpopularniejsze sposoby to użycie getimagesize, ale jestem ciekawe Waszych opinii.
Pozdrawiam.
Proszę o pomoc.
wookieb
13.07.2010, 21:31:46
Aktualnie najlepszym zabezpieczeniem jeżeli chodzi o wykrywanie typu pliku to
http://pl.php.net/manual/pl/book.fileinfo.php
kapuch
13.07.2010, 21:32:42
http://mijagi.vot.pl/index.php/2009/08/bez...-uploadu-w-php/Mysle ze pod tym linkiem, temat jest dosc powaznie rozkminiony

EDIT:
No bez kitu, drugi raz (na dwa) zostalem uprzedzony o sekundy, a temat wisial bez odpowiedzi chyba z 20min

Chyba zaczne grac w te szachy...a co!
wookieb
13.07.2010, 21:36:15
Cytat(kapuch @ 13.07.2010, 22:32:42 )

Mysle ze pod tym linkiem, temat jest dosc powaznie rozkminiony

Na pewno został w nim źle omówiony właśnie temat MIMETYPE
kapuch
13.07.2010, 21:40:45
Cytat(wookieb @ 13.07.2010, 22:36:15 )

Na pewno został w nim źle omówiony właśnie temat MIMETYPE

Tam twierdza, ze latwo to nadpisac (ale uzywac warto), ja tam sie nie znam na hakierowaniu, wiec nie wiem

Tak czy siak, nie bylo Twojego postu, dlatego dalem ten link - jak zwykle drugi
siurek22
13.07.2010, 22:00:14
MIMETYPE samo nic nieda najwazniejsze to kontrola rozszerzenia pliku zalezy tez co uploadujesz czy same obrazy czy all, getimagesize() nie jest najbezpiczniejsze da sie oszukac... jezli ktos ma jakies ale to zapraszam na bloga speca :]
http://gynvael.coldwind.pl/?id=219Co do obrazow to chyba najbezpieczniej jest tworzenie nowego obrazu w przeskalowaniu o 1% co powinno wymieszac kod php tak zeby nam sie do includa niezdal...
wookieb
13.07.2010, 22:06:50
Cytat(siurek22 @ 13.07.2010, 23:00:14 )

MIMETYPE samo nic nieda najwazniejsze to kontrola rozszerzenia pliku
Że co?
siurek22
13.07.2010, 22:15:11
translate: "sprawdzenie samego mimetype nic nie da... najważniejsze to dokładnie pilnować rozszerzenia pliku jaki jest wgrywany na serwer"
wookieb
13.07.2010, 22:16:26
Raczej odwrotnie. Jak narazie fileinfo mnie nie zawiódł i po dokładniejszej lekturze twojego linku przestudiuje to co jest tam podane.
siurek22
13.07.2010, 22:34:36
Właśnie zabezpieczenia w php to dość drażliwy problem bo jak się nie znajdzie błąd w samym języku to jakieś nie domówienie w specyfikacji języka o czym możemy dość sporo wyczytać na blogu który podałem. I tu mamy małego zonka bo żeby coś bezpiecznego zrobić to naprawdę wiele trzeba się naczytać przykładowo wiele osób listujących katalogi lub robiących skrypty pobierające pliki zabezpieczenia się przed zejściem katalog niżej a zapominają o streamach data, file itd.
iVorIus
14.07.2010, 00:25:41
Z fileinfo na razie nie mogę korzystać, bo php jest jeszcze w wersji 5.2
Upload tylko obrazków. Jaką sprawdzoną metodę wybrać?
darko
14.07.2010, 02:07:49
Mam podobny problem, fileinfo nie jest obsługiwane na serwerze, na którym muszę pracować. Nic nie dało też sprawdzanie typu mime pliku za pomocą poleceń systemowych, np. exec('file -bi nazwa'); itd. dlatego, że np. nowsze formaty plików office, jako że posiadają skompresowane dane (?) są rozpoznawane jako typ zip. Dodatkowo też występują różnice w niektórych nazwach typów mime na różnych serwerach, w zależności od wersji i rodzaju zainstalowanego systemu operacyjnego (sytuacja sprawdzona). Czy zostaje tylko jakiś flashowy uploader np. uploadify? Z drugiej strony - odpowiedni mechanizm weryfikacji przesyłanych plików pod różnym kątem też trzeba jakoś obsłużyć w php. Czy jedynym skutecznym rozwiązaniem jest faktycznie tylko fileinfo?
siurek22
14.07.2010, 05:41:41
zalezy co chcesz robic bo jezeli nie sa to obrazy a chcesz te pliki pobierac to dobrze jest przydzielic wlasna nazwe tamta ktora byla podana przefiltrowac i zapisac w bazie i podczas pobierania pliku ustawic zeby wstawialo wczesniejsza nazwe... lub zwykla kontrola rozszerzenia tylko musicie pamietac zeby sprawdzic dlugosc nazwy i jak sprawdzanie rozszerzenie to brac ostatnie .txt a nie losowo bo dosc duzo skrypto sie na tym wyklada wtedy wystarczy zrobic plik.txt.php sprawdzcie tez czy koles nie zmienia czasem katalogow. widzialem tez ze ludzie bawia sie nieraz w htaccess i wylaczaja dzialanie plikow php dla wybranych katalogow
darko
14.07.2010, 09:49:19
Cytat(siurek22 @ 14.07.2010, 06:41:41 )

zalezy co chcesz robic bo jezeli nie sa to obrazy a chcesz te pliki pobierac to dobrze jest przydzielic wlasna nazwe tamta ktora byla podana przefiltrowac i zapisac w bazie i podczas pobierania pliku ustawic zeby wstawialo wczesniejsza nazwe... lub zwykla kontrola rozszerzenia tylko musicie pamietac zeby sprawdzic dlugosc nazwy i jak sprawdzanie rozszerzenie to brac ostatnie .txt a nie losowo bo dosc duzo skrypto sie na tym wyklada wtedy wystarczy zrobic plik.txt.php sprawdzcie tez czy koles nie zmienia czasem katalogow. widzialem tez ze ludzie bawia sie nieraz w htaccess i wylaczaja dzialanie plikow php dla wybranych katalogow
Wydaje mi się, że to jest jasne, sam robię podobnie, z tym, że jeszcze oprócz filtrowania nazwy (wywalam polskie diakrytyki, zamieniam spacje na podkreślniki itp.) zmieniam też nazwę pliku na ustaloną w ogólnym formacie (dodaję na początku id z bazy+podkreślnik), aby uniknąć przypadkowego nadpisania plików o tej samej nazwie. Do spr. rozszerzenia pliku używam funkcji pathinfo, więc sztuczki typu nazwa_pliku.test.txt.tar.gz.php nie przejdą.
iVorIus
14.07.2010, 17:20:07
Okej, ostatnie 2 konkretne pytania:
1. W jaki sposób sprawdzić typ pliku nie mając do dyspozycji fileinfo ?
2. Jak zabezpieczyć upload, do wgrywania tylko obrazów (jpeg, png, gif) ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.