Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Upload i szkodliwe oprogramowanie
Forum PHP.pl > Forum > Przedszkole
Mateusz Bogolubow
Witam,

Obecnie pracuję nad serwisem, w którym jedną z dostępnych funkcjonalności to upload plików na serwer. Naniosłem na użytkownika pewne ograniczenie, które polega na przesyłaniu jedynie archiwów zip.

Po tym słowie wstępu mam do Was kilka pytań.

Po pierwsze: Jak można zabezpieczyć się przed przesyłaniem plików innych niż ZIP?

Co już wdrożyłem: Sprawdzanie zawartości tablicy $_FILES[]['typ'] oraz rozszerzenia pliku. Zdaję sobie sprawę z niskiego poziomu zabezpieczenia tej metody. Dodatkowo korzystam z funkcji zip_open(), aby sprawdzić czy plik naprawdę jest archiwum ZIP. Jeśli funkcja nie zwraca uchwytu uważam plik za błędny. Czekam na opinie czy moje rozwiązanie jest dobre.

Drugie pytanie: Jak sprawdzić czy archiwum nie zawiera szkodliwego oprogramowania.

Zdaję sobie sprawę z faktu, że będzie ciężko wyłapać każdy szkodliwe oprogramowanie, ale chociaż podstawowa ochrona by się przydała. Dodam, że pracuje na wirtualnym serwerze, więc zmiana konfiguracji ustawień może być trudna, ale chętnie posłucham rozwiązań dedykowanych, co może przekona mnie do przejścia na serwer dedykowany.
wookieb
1) Metoda moze byc. Chociaz mnie by sie nie chcialo nawet otwierac tego L:P
2) To juz musisz miec antyvirusa na serwerze ktory pozwoli przeskanowac te pliki.
Mozesz to zrobic np za pomoca exec. ale musisz miec antyvira na serwerze.
gox
Zamiast siusiac czy na pewno dobrze zabezpieczylem upload, uzywam liba z CodeIgnitera i mam spokoj... bedziesz zaskoczony jak wiele problemow rozwiazuje uzycie frameworka... o ile dasz sie przekonac...
Mateusz Bogolubow
Cytat
Zamiast siusiac czy na pewno dobrze zabezpieczylem upload, uzywam liba z CodeIgnitera

Trochę nie na temat... trzymajmy się pytań.

Cytat
To juz musisz miec antyvirusa na serwerze ktory pozwoli przeskanowac te pliki.
Mozesz to zrobic np za pomoca exec. ale musisz miec antyvira na serwerze.


Prawdopodobnie exec jest zablokowany. Zastanawiałem się czy nie ma jakiegoś 'zewnętrznego' rozwiązania...
Maxik
Prawdopodobnie nie ma innej opcji niż shell.
Cysiaczek
Jest inna opcja, ale jest mało elegancka. Jeśli nie masz antywirusa na serwerze, to znajdź jakiś inny zewnętrzny serwer, który go ma. Nie po to, aby go wykorzystać jako serwer www, tylko wysłać FTP'em ten plik i zlecić jego sprawdzenie. Być może nawet są jakieś serwisy, które takie coś udostępniają - poszukaj.
Schemat działania:
Upolad pliku "cos.zip" -> Otwarcie sesji FTP do kolejnego serwera i wysłanie pliku z żądaniem zbadania. Plik lokalnie oznaczasz jako "w kwarantannie - oczekuje na zbadanie"
W kolejnej sesji Twój serwer łączy się z serwerem na który posłał plik, aby odebrać informacje o wynikach skanowania. Tyle. smile.gif

Pozdrawiam.
gox
A, kolega chce skanowac...

Soł, kompleksowe skanowanie plików w sieci oferuje serwis
http://virusscan.jotti.org/
(pierwszy link w G po wpisaniu virus scan...)

Tamtejsze AV najprawdopodobniej radza sobie ze spakowanymi paczkami, sprawdz.

Rozpakowanie w php -- no problemo -- raz ze sa do tego liby,
dwa ze zawsze mozesz dac shell_exec, i uzyc jakiegos kumbajna 7zip np.... oczywiscie takie rzeczy to raczej tylko na dedyku...

Niestety nie mozna ofac w 100% temu skanerowi, ba, ja bym nie ufal nawet w 50%, daj 10 min to skrobne malware, ktore nie zostanie wykryte, a narobi spustoszenia smile.gif
To samo w druga strone, polowa AV potrafi wykryc jako wirus kompletnie nieszkodliwy programik (ta technologia nosi nazwe "analiza heurystyczna" smile.gif )
Nalezalo by tez uwazac z rozpakowywaniem po stronie serwka... to juz operacja podczas ktorej moze dosc do ataku na aplikacje..

Narazie nie przychodzi mi nic wiecej madrego do glowy...
Mateusz Bogolubow
Jak nic już nie wymyśle to pewnie skorzystam z serwisu http://virusscan.jotti.org. Prześle plik przez cURL i zobaczę co tam on wypisze...

Cytat
Nalezalo by tez uwazac z rozpakowywaniem po stronie serwka... to juz operacja podczas ktorej moze dosc do ataku na aplikacje..


Takie pytanie... czy pobranie uchwytu pliku (np. za pomocą zip_open()) może już mnie narazić na atak?
l0ud
Cytat
Takie pytanie... czy pobranie uchwytu pliku (np. za pomocą zip_open()) może już mnie narazić na atak?


Nie. No chyba, że istnieje jakaś dziura w bibliotece, ale to już byłby problem po stronie php winksmiley.jpg
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.