Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]zabezpieczenie uploadu plikow
trucksweb
post
Post #1





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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ż (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/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" (IMG:style_emoticons/default/smile.gif)

Polecam! (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 12:07