Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] upload plików - bezpieczeństwo
Forum PHP.pl > Forum > PHP
grit
Witam, mam następujący problem.
Jestem zmuszony zrobić upload plików do serwisu za pośrednictwem tradycyjnego formularza. Muszą to być pliki typu TXT, DOC, XLS, PPT i pliki graficzne.
Problem polega na wg mnie dość dużym niebezpieczeństwie przechowywania takich plików. Pomijając już kwestię, ze ktoś może wgrać plik zawirusowany (tutaj wymiękam już na starcie sad.gif ) to ktoś może wrzucić plik o niebezpiecznej zawartości od strony funkcjonowania serwisu- na przykład skrypt PHP w pliku z rozszerzeniem TXT- a później go uruchomić

O ile z plikami graficznymi w zasadzie nie ma problemu (sprawa często gesto opisywana na forum) to z innymi typami mam problem.

Póki co jestem w stanie sprawdzić czy ktoś nie podmienił rozszerzenia pliku - np wrzucił plik tekstowy ze zmienionym rozszerzeniem JPG.
Ale to nadal nie załatwia sprawy.

Proszę, pomóżcie to jakoś rozwiązać.
Właściwie to sam już nie jestem pewien jakie są niebezpieczeństwa (wydaje mi się, że jest ich dość dużo i że nie ze wszystkich zdaję sobie sprawę). Jeśli takowe są (np. czy można uruchomić skrypt PHP lub EXE lub jakiś inny na serwerze z pośrednictwem plików DOC, XLS, TXT lub PPT) to jak je wyeliminować?

Ew. mogę zrezygnować z TXT, ale co z innymi typami?

Zastanawiam się nad odczytywanie zawartości, np. za pośrednictwem funkcji file() tylko czego szukać? jakich treści? <??> ? czy tylko tego czy czegoś jeszcze.

Będę wdzięczny za podpowiedzi w tej kwestii.
wlamywacz
Jeśli chodzi o txt nic się nie bój bo to jest niewykonalne (chyba że masz włączone parsowanie plików txt -.-). Zainteresuj się skryptem do uploadu uber-upload troszkę skomplikowany ale jak pojmiesz o co chodzi to jest przyjemny w obsłudze.
grit
dzieki... "wlamywacz" smile.gif fajny nick - pasuje do mojego posta winksmiley.jpg

Patrząc od tej strony - ani DOC anid XLS ani PPT ani TXt nie jest wykonywalny na serwerze. Właściwie pliki graficzne też nie. Ale czy nie istnieje sposób by za pośrednictwem takiego pliku rozwalić serwer/serwis? Jeśli ktoś ściągnie plik do siebie i uruchomi to ja już umywam ręce ale do czasu gdy plik na serwerze... nerwy minerwy...

Faktycznie uber-uploader jest dosc skomplikowany ale może być interesujący. Na obecnym etapie go odpuszcze bo nie mam czasu sie prze zniego przegryzać ale może wróce kiedyś...

Wracając do tematu, poprosze o pomysły włamów i ew. ich zabezpieczeń.
wlamywacz
Jeśli plik nie jest parsowany nie ma prawa nic się w nim wykonać. Jeśli boisz się o fotki to poprostu użyj na nich funkcji GD z zasobów PHP i po kłopocie smile.gif A jeśli chcesz mogę Ci nawet pomóc z uber-upload gdyż sam go używam i jestem bardzo zadowolony z jego funkcji i działania.
grit
Mozesz mi krótko wyjaśnić na czym wg Ciebie polega siła uber-upload? Tak jak napisalem wcześniej nie oglądałem go dokładnie. Na pierwszy rzut oka to skrypt, który ma fajny progress bar, obsługuje kontrolę typów plików i wielkość POST MAX SIZE. Co jeszcze jest w nim warte uwagi? Podejrzewam, ze coś jest ale co...

Jeśli chodzi o pliki graficzne to jak napisałem raczej problemu nie ma - ze sprawdzeniem czy faktycznie jest to plik graficzny- natomiast jakie jest związane z nimi zagrożenie? Przecież nie są one parsowane przez serwer - z wyjątkiem ew. obróbki relizowanej przez skrypt PHP. Jednym słowem jest to taki sam plik zewn. jak np. doc czy xls. Dobrze mówię czy się mylę?
wlamywacz
Uber-upload jest napisany w PERLu i ma taki opcje jak napisałeś poza tym atutem jest upload bez przeładowania itp. smile.gif
Dinth
Zdaje się pliki Officowskie maja jakies naglowki. Wystarczy odczytac binarnie pierwsze kilkadziesiat (?) bajtów i porównać je ze wzorcem.

Mam nadzieje że nie wprowadzam nikogo w bład bo to co napisałem nie wynika ze znajomości PHP czy bezpieczeństwa na serwerze, tylko z moich dawnych zabaw Pascalem smile.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.