Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]zabezpieczenie uploadu plikow
Forum PHP.pl > Forum > Przedszkole
trucksweb
jako, ze napotkalem wiekszy problem niz sie spodziewalem musze zaczerpnac od Was nieco wiedzy.

w swojej aplikacji, udostepnilem przesylaniem plikow na serwer - ogolnie wszystkich, w tym takze php.
Problem polega na tym, ze nie bardzo wychodzi mi zabezpieczenie serwera przed wywowalnie nowych plikow php. Ogolnie moglbym wylaczyc wywowlywanie skryptow, jednak pliki uploaduje do katalogu glownego.

Zablokowalem teraz wgrywanie i modyfikacje pliku htaccess, oraz ustawilem chmody dla nowych plikow na 0600. niestety i to nie bardzo pomaga, bo dalej moge odpalic nowy plik ze skryptem php, ktory wylistuje mi caly serwer.

Uzytkownik "pyro" w innym temacie wskazal ze mozna utworzyc nowego usera i zamknac go w tym katalogu. nie bardzo jednak widze taka mozliwosc - bo niby jak to mialboy wygladac ?
Sephirus
hmmm przede wszystkim jest jedna podstawowa zasada. Pliki "podejrzane" uploadujemy z dala od katalogu głównego WWW. Sądzę, że z tym nie będziesz miał problemu.

Jak już masz pliki poza tym katalogiem to mam propozycję:

Możesz zapisać je pod zmienioną nazwą na pewno plik wgrywany ma jakieś unikalne ID - możesz zapisać go pod nazwą ID (albo md5($id)) a nazwę trzymać w bazie. Ale to nie zawsze jest dobry pomysł - chociaż ma dużo zalet.

Dalej... Jeżeli boisz się wykonywania jakichś plików, ustaw im po wgraniu odpowiednie uprawnienia - możesz wyłączyć odpalanie przecież wink.gif albo dać to na katalog w którym masz pliki.

Teraz na pewno zastanawiasz się - dobra wrzucę pliki do katalogu poza www - przecież to bzdura - jak ja je stamtąd wyciągnę :/ - musiałbym użyć PHP w stylu readfile() a to przecież duży spadek wydajności i zjadanie ramu... - zgadza się ale można to zrobić wydajnie nie wykorzystując do tego PHP'a smile.gif

  1. //We want to force a download box with the filename hello.txt
  2. header('Content-Disposition: attachment;filename=hello.txt');
  3.  
  4. //File is located at /home/username/hello.txt
  5. header('X-Sendfile: /home/username/hello.txt');


przykład pochodzi z CodeUtopia i jest dla Apache - ale dla innych serwerów też są "odpowiedniki" smile.gif

Polecam! wink.gif
trucksweb
hmm, zabawy z tym bedzie jednak.

chcialem zrobic jakas alternatywe dla ftpa, ale widze ze jednak to troche bez sensu.
-zmienie katalog docelowy - bo umozliwilem wgrywanie plikow do katalogu www, gdzie jest glowny kontroler
-dodam wylacznie akceptowanie plikow multimedialnych

no i na tym zakoncze
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.