Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Jakie zabezpieczenie uploadu?
Forum PHP.pl > Forum > Przedszkole
iVorIus
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
Aktualnie najlepszym zabezpieczeniem jeżeli chodzi o wykrywanie typu pliku to http://pl.php.net/manual/pl/book.fileinfo.php
kapuch
http://mijagi.vot.pl/index.php/2009/08/bez...-uploadu-w-php/

Mysle ze pod tym linkiem, temat jest dosc powaznie rozkminiony winksmiley.jpg

EDIT:
No bez kitu, drugi raz (na dwa) zostalem uprzedzony o sekundy, a temat wisial bez odpowiedzi chyba z 20min smile.gif
Chyba zaczne grac w te szachy...a co!
wookieb
Cytat(kapuch @ 13.07.2010, 22:32:42 ) *
Mysle ze pod tym linkiem, temat jest dosc powaznie rozkminiony winksmiley.jpg

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

Tam twierdza, ze latwo to nadpisac (ale uzywac warto), ja tam sie nie znam na hakierowaniu, wiec nie wiem winksmiley.jpg
Tak czy siak, nie bylo Twojego postu, dlatego dalem ten link - jak zwykle drugi smile.gif
siurek22
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=219
Co 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
Cytat(siurek22 @ 13.07.2010, 23:00:14 ) *
MIMETYPE samo nic nieda najwazniejsze to kontrola rozszerzenia pliku

Że co?
siurek22
translate: "sprawdzenie samego mimetype nic nie da... najważniejsze to dokładnie pilnować rozszerzenia pliku jaki jest wgrywany na serwer"
tongue.gif
wookieb
Raczej odwrotnie. Jak narazie fileinfo mnie nie zawiódł i po dokładniejszej lekturze twojego linku przestudiuje to co jest tam podane.
siurek22
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
Z fileinfo na razie nie mogę korzystać, bo php jest jeszcze w wersji 5.2

Upload tylko obrazków. Jaką sprawdzoną metodę wybrać?
darko
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
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
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
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.