Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> uprawnienia 777
johnyMajster
post 25.09.2012, 20:49:36
Post #1





Grupa: Zarejestrowani
Postów: 151
Pomógł: 2
Dołączył: 2.08.2012
Skąd: Wrocław

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


Witam
Pisząc funkcje usuwania zdjęc unlink wyrzucił mi permission denied.
Zacząłęm sie zastanawiac wtedy czy gdy zmienie chmoda na 777 zwykły kowalski będzie mógł wykasowac mi plik z serwera nawet sie nie logując do mojej aplikacji?questionmark.gif
Go to the top of the page
+Quote Post
Uriziel01
post 25.09.2012, 21:03:16
Post #2





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

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


Oczywiście że tak, ale jak odpali zdalnie polecenie na serwerze ?

Ten post edytował Uriziel01 25.09.2012, 21:03:31
Go to the top of the page
+Quote Post
johnyMajster
post 25.09.2012, 21:13:46
Post #3





Grupa: Zarejestrowani
Postów: 151
Pomógł: 2
Dołączył: 2.08.2012
Skąd: Wrocław

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


Mam zdjęcia w pewnym folderze. Jak zrobic zeby mogły byc usuwane tylko kiedy odpalana jest funkcja(zawierajaca unlink) na mojej stronie internetowej przez uzytkowników??

Ten post edytował johnyMajster 25.09.2012, 21:14:13
Go to the top of the page
+Quote Post
Uriziel01
post 26.09.2012, 07:06:10
Post #4





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

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


Chyba nie rozumiem w czym problem, nie zlimitujesz możliwości usunięcia pliku do pojedyńczej funkci z PHP bo sam change mode nie zawiera takich mechanizmów, ale możesz po prostu ustawić możliwość zapisu odczytu dla właściciela i tyle. Osoba która wpisze nawet adres pliku w przeglądarce i tak będzie uzyskiwała dostęp do pliku jako użytkownik na którym odpalony jest web serwer (www-data?).
Go to the top of the page
+Quote Post
Mlodycompany
post 26.09.2012, 07:24:03
Post #5





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Cytat(Uriziel01 @ 26.09.2012, 08:06:10 ) *
... ale możesz po prostu ustawić możliwość zapisu odczytu dla właściciela i tyle...


To akurat nie wiele da. Dlaczego? Otóż Apache uruchomiony jest na koncie www-data i wszystkie operacje są wykonywane z uprawnieniami tego konta. Oczywiście można się pokusić aby wykonać jakieś polecenie z poziomu innego użytkownika, ale nie wszystkie serwery dają taką opcję.

Zmiana chmod'a na 777(755 by wystarczyło) wchodzi w grę, tylko wtedy każdy będzie mógł usunąć etc.Ogólnie nie jest to bezpieczne rozwiązanie.

Wg mnie najlepszym rozwiązaniem będzie wykorzystanie do tego FTP. Łączyć się z nim jako konkretny użytkownik i usuwać...
Go to the top of the page
+Quote Post
abort
post 26.09.2012, 08:17:43
Post #6





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

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


Cytat(johnyMajster @ 25.09.2012, 21:49:36 ) *
Witam
Pisząc funkcje usuwania zdjęc unlink wyrzucił mi permission denied.
Zacząłęm sie zastanawiac wtedy czy gdy zmienie chmoda na 777 zwykły kowalski będzie mógł wykasowac mi plik z serwera nawet sie nie logując do mojej aplikacji?questionmark.gif

Chwila, bo nie rozumiem. Chcesz kasować z aplikacji webowej, i tylko z niej - OK. Chcesz zabronić "zwykłemu Kowalskiemu". Czyli komu?
a) Komuś posiadającemu konto (shell/ftp)?
cool.gif Czy komuś posiadającemu inną wirtualkę?
c) Czy jeszcze jakoś inaczej?

Jeśli a), to jest sytuacja taka, że Twój skrypt chodzi z prawami tego usera, który jest w konfiguracji serwera WWW (np. www-data). A zalogowanie się na serwer via ftp/ssh to inny użytkownik w systemie (np. 'jasiu'). W takim przypadku możesz na katalog nałożyć "restricted deletion flag", robi się to przez chmod - prawa ustawiasz na 1755 (tak, cztery cyfry)
jeśli cool.gif, to musisz liczyć na to, że user 'jasiu' mająsy swoją wirtualkę nie może wejść do katalogu Twojej wirtualki (bo jak pozna ścieżkę i wejdzie, to jego wirtualka i Twoja działa z takimi samymi prawami - więc może zrobić dokładnie to, co Ty w swoim skrypcie.
Go to the top of the page
+Quote Post
Uriziel01
post 26.09.2012, 08:29:41
Post #7





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

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


Cytat(Mlodycompany @ 26.09.2012, 08:24:03 ) *
To akurat nie wiele da. Dlaczego? Otóż Apache uruchomiony jest na koncie www-data i wszystkie operacje są wykonywane z uprawnieniami tego konta. Oczywiście można się pokusić aby wykonać jakieś polecenie z poziomu innego użytkownika, ale nie wszystkie serwery dają taką opcję.

Zmiana chmod'a na 777(755 by wystarczyło) wchodzi w grę, tylko wtedy każdy będzie mógł usunąć etc.Ogólnie nie jest to bezpieczne rozwiązanie.

Wg mnie najlepszym rozwiązaniem będzie wykorzystanie do tego FTP. Łączyć się z nim jako konkretny użytkownik i usuwać...

Rozumiem że mówiąc że nie jest to bezpiecznie (777) rozwiązanie zakładasz dziurę w aplikacji ? Ewentualnie włączenie mod_dav w apache ale to rzadkość.

EDIT:

Cytat(abort @ 26.09.2012, 09:17:43 ) *
Chwila, bo nie rozumiem. Chcesz kasować z aplikacji webowej, i tylko z niej - OK. Chcesz zabronić "zwykłemu Kowalskiemu". Czyli komu?
a) Komuś posiadającemu konto (shell/ftp)?
cool.gif Czy komuś posiadającemu inną wirtualkę?
c) Czy jeszcze jakoś inaczej?


Ooo, fakt. Możliwe że faktycznie zbyt naiwnie założyłem że autor ma na myśli połączenie przez http, poczekajmy na jego odpowiedź smile.gif

Ten post edytował Uriziel01 26.09.2012, 08:31:35
Go to the top of the page
+Quote Post
Mlodycompany
post 26.09.2012, 12:30:13
Post #8





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Cytat(Uriziel01 @ 26.09.2012, 09:29:41 ) *
...Rozumiem że mówiąc że nie jest to bezpiecznie (777) rozwiązanie zakładasz dziurę w aplikacji ....

ogólnie chmod 777 nie jest bezpieczny, nigdzie! Nie musi być dziury w aplikacji. Chodzi mi bardziej o takie serwery gdzie dostęp ma kilku użytkowników. Gdy jakiś plik ma 777 to każdy posiadający konto może zrobić wszystko z tym plikiem.
Go to the top of the page
+Quote Post
abort
post 26.09.2012, 12:58:57
Post #9





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

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


Cytat(Mlodycompany @ 26.09.2012, 13:30:13 ) *
ogólnie chmod 777 nie jest bezpieczny, nigdzie! Nie musi być dziury w aplikacji. Chodzi mi bardziej o takie serwery gdzie dostęp ma kilku użytkowników. Gdy jakiś plik ma 777 to każdy posiadający konto może zrobić wszystko z tym plikiem.

W tym celu wymyślono prawa 1777 (restriction delete flag).
Go to the top of the page
+Quote Post
johnyMajster
post 26.09.2012, 19:24:08
Post #10





Grupa: Zarejestrowani
Postów: 151
Pomógł: 2
Dołączył: 2.08.2012
Skąd: Wrocław

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


Opisze trochę jaśniej o co mi chodzi:
Napisałem sobie formularz do ładowania zdjęc. Ładowanie zdjecia to dodanie zdjecia do katalogu uploads na serwerze oraz dodanie linka do bazy.

Napisałem sobie równiez usuwanie czyli unlink plik zdjęcia oraz usuniecie z bazy rekordu. Niestety unlink nie chce mi działac poniewaz mam permision denied.

W związku z tym postanowiłem nadac folderowi uprawnienia 777(tak na marginesie nie wiem jak bo w TC nie mam tego okienka gdzie sie wpisuje 777 a nie wiem jakiego wierszapolecen uzyc na serwerze XAMP apache)

I wtedy pojawiło sie pytanie
a) Moja aplikacja ma profile użytkowników (powiedzmy tak jak na FB) kazdy uzytkownik ma akcje usunMojeZdjecie($MojId,&idZdjecia) i w tej akcji jest unlink. Czy moze przyjsc jakis haker z zewnątz i usunąc zdjęcia moich uzytkowników z serwera lub zamienic je skoro folder uploads ma 777?? Z waszych wypowiedzi zrozumiałem ze nie ma takiej mozliwosci??

b)Czy haker moze sobie napisac formularz który w pętli zasmieci moj katalog uploads wrzucając tam różne pliki??

Ten post edytował johnyMajster 26.09.2012, 19:26:29
Go to the top of the page
+Quote Post
abort
post 26.09.2012, 20:18:24
Post #11





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

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


Permission denied na xampie? Jakoś nie chce mi się wierzyć - możesz się upewnić i gdzieś wyrzucić sobie pełną ścieżkę do zdjęcia (var_dump, print_r lub inny ekwiwalent). Mam podejrzenie, że gdzieś ci się coś niedokleiło albo dokleiłeś za dużo (i zwróć uwagę na spacje) :)

Odnośnie praw dostępu: opisałem prawa dostępu w Uniksach, czytelniej jest tu: http://pl.wikipedia.org/wiki/Prawa_dost%C4%99pu
W skrócie: "777" oznacza pełne prawa dla danego pliku dla wszystkich ludzi. Wszyscy mogą wszystko: czytać, pisać, kasować...

A odpowiedź na Twoje pytania: w ogólnym przypadku jak najbardziej może.
Twoim zadaniem jako projektanta aplikacji jest to, aby nie dopuścić do błędów i niedopatrzeń. Czyli: musisz jakoś rozróżniać userów (logowanie: ciastka, sesje), musisz zapewnić filtrowanie danych wprowadzanych przez userów (poczytaj o SQL Injection). Warto też poczytać o XSS i innych atakach na web-aplikacje.

"czy może przyjść jakiś haker"... Ogólnie to... zawsze może się zdarzyć. Jak się zainteresuje hostem, to interesują go głównie prawa roota (administratora systemu), a wtedy jedynym zabezpieczeniem jest backup wszystkich danych na innej maszynie.

... "i usunąc zdjęcia moich uzytkowników z serwera lub zamienic je skoro folder uploads ma 777" - JAK NAJBARDZIEJ MOŻE. Mało tego, przed tym nie uchroni nawet proponowane przeze mnie ustawienie prawa "1777". Dotyczy to oczywiście ataku na web-aplikację. (bo będzie miał takie same prawa jak i Ty).

"Czy haker moze sobie napisac formularz który..." - jak się włamie, to może wszystko co i Ty - włącznie ze skasowaniem bazy (bo przecież hasło do bazy trzyma się gdzieś w plikach tekstowych, prawda?)
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 09:29