Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z funkcją move_upload_files
Solaris2001
post 14.10.2012, 20:59:45
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 24.07.2012

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


Witam. Napisałem sobie skrypt, który wgrywa zdjęcia na serwer, zmienia nazwę, przenosi do katalogu i wykonuje na pliku przekształcenia.
O ile dobrze działał na hoście cba.pl to na ugu.pl jest problem z przeniesieniem pliku z tmp do katalogu. Plik jest wgrywany bo normalnie działają funkcję porówniania rozmiaru, rozszerzenia. Niestety parser nie wywala żadnego błędu, tylko idzie dalej. Czy możecie mi powiedzieć o co chodzi? Poniżej wklejam fragment kodu odpowiedzialny za tą funkcję:
  1. $max_rozmiar = 3072*1024;
  2. if (isset ($_POST['submit'])){
  3. if (!empty($_POST['tytul'])){
  4. if (is_uploaded_file($_FILES['plik']['tmp_name'])) {
  5. if ($_FILES['plik']['size'] > $max_rozmiar) {
  6. $info = 'Błąd! Plik jest za duży!';
  7. $przerwij = true;
  8. }
  9. else if ($_FILES['plik']['type']!='image/jpeg'){
  10. $info = '<span style="color: red;">Niepoprawny format pliku. Akceptowane są pliki tylko z rozszerzeniem <b>.jpg</b>!</span>';
  11. $przerwij = true;
  12. }
  13. else {
  14. $info = 'Zdjęcie zostało dodane! Skopiuj kod poniżej i wklej go do tematu.';
  15. $plik_nazwa = nazwa_pliku();
  16. move_uploaded_file($_FILES['plik']['tmp_name'],$_SERVER['DOCUMENT_ROOT'].'/img/'.$plik_nazwa.'.jpg');
  17. mysql_query("INSERT INTO `galeria` (`tytul`,`opis`,`autor`,`adres`) VALUES ('".$_POST['tytul']."','".$_POST['opis']."','".$uzytkownik."','http://mpkoc.ugu.pl/img/".$plik_nazwa.".jpg')");
  18. }
  19. }
  20. ...


$_SERVER['DOCUMENT_ROOT'] - "/virtual/m/p/mpkoc.ugu.pl"
$_FILES['plik']['tmp_name'] - "/virtual/tmp/phpSmiPg6"

Ten post edytował Solaris2001 14.10.2012, 21:04:31
Go to the top of the page
+Quote Post
tab
post 14.10.2012, 21:05:09
Post #2





Grupa: Zarejestrowani
Postów: 75
Pomógł: 20
Dołączył: 8.10.2012

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


dodaj error_reporting(E_ALL) i powiedz jakie błędy Ci wypisuje
Go to the top of the page
+Quote Post
Solaris2001
post 14.10.2012, 21:11:50
Post #3





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 24.07.2012

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


Już działa. Chodziło o to, że folder img nie miał ustawionych CHMODów na 777.
Ale dzięki za tą instrukcję, na pewno przyda się.
Go to the top of the page
+Quote Post
cudny
post 14.10.2012, 22:53:23
Post #4





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


Cytat(Solaris2001 @ 14.10.2012, 20:11:50 ) *
Już działa. Chodziło o to, że folder img nie miał ustawionych CHMODów na 777.
Ale dzięki za tą instrukcję, na pewno przyda się.


Uprawnienia na 777 to zło !
Utwórz sobie lepiej ten katalog z pozycji php, bedziesz mial pelny dostep.
A jeśli nie to dodaj apacha do grupy z uprawnieniami roota


--------------------
..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
Go to the top of the page
+Quote Post
abort
post 15.10.2012, 23:03:05
Post #5





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

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


Cytat(cudny @ 14.10.2012, 23:53:23 ) *
Uprawnienia na 777 to zło !


Bo co, napsuje coś? No to tylko w tym jednym katalogu... Poza tym, CZASAMI można zastosować prawa 1777, ale po co robić małe luki, lepiej zróbmy tak jak proponujesz:

Cytat(cudny @ 14.10.2012, 23:53:23 ) *
A jeśli nie to dodaj apacha do grupy z uprawnieniami roota


...i wtedy Apache i PHP będą mogły psuć w całym systemie... No chyba że admin był na tyle bystry i przewidujący, że ustawił chroota/jaila.
Nie po to projektanci Apache kupę czasu spędzili nad tym, by serwer nie musiał chodzić z UID=0, by teraz dodawanie Apacha do grup rootowych było panaceum na wszystko.
Nie, to jest jeszcze gorsze rozwiązanie niż chmod 777.
Go to the top of the page
+Quote Post
hedrazer
post 15.10.2012, 23:10:59
Post #6





Grupa: Zarejestrowani
Postów: 15
Pomógł: 1
Dołączył: 27.03.2009
Skąd: Pułtusk

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


jak już to przynajmniej zabrać uprawnienia na executa, read i write wystarczy...
Go to the top of the page
+Quote Post
abort
post 15.10.2012, 23:16:44
Post #7





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

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


I co Ci da zabranie execute? W przypadku pliku - nic. Z reguły nie wrzuca się na serwer binarek plików, poza tym przytomny admin wie, jak w momencie startu systemu zabronić uruchamiania jakichkolwiek niepożądanych binarek, bo czytał manuala do mount.
A w przypadku katalogu zabranie execute skutkuje jednym: niemożliwością wejścia do katalogu i czytania jego zawartości.

Obawiam się, że ze swoimi radami błądzisz we mgle. Przyjmij w dobrej wierze, że 777 na jakiś jeden dedykowany katalog to i tak mała dziura smile.gif
Go to the top of the page
+Quote Post
cudny
post 16.10.2012, 08:44:50
Post #8





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


Cytat(abort @ 15.10.2012, 22:03:05 ) *
Bo co, napsuje coś? No to tylko w tym jednym katalogu... Poza tym, CZASAMI można zastosować prawa 1777, ale po co robić małe luki, lepiej zróbmy tak jak proponujesz:


Ale gadasz głupoty - nadawanie uprawnień 777 to nieporozumienie, nadaj jeszcze odpowiednie allowoverride i czekaj co dalej !

Cytat(abort @ 15.10.2012, 22:03:05 ) *
...i wtedy Apache i PHP będą mogły psuć w całym systemie... No chyba że admin był na tyle bystry i przewidujący, że ustawił chroota/jaila.
Nie po to projektanci Apache kupę czasu spędzili nad tym, by serwer nie musiał chodzić z UID=0, by teraz dodawanie Apacha do grup rootowych było panaceum na wszystko.
Nie, to jest jeszcze gorsze rozwiązanie niż chmod 777.


Jak psujesz sobie Apachem czy php cokolwiek to może zajmij się czym innym.
Poza tym wystarczy Apachowi nadać uprawnienia do /var/www i tyle


--------------------
..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
Go to the top of the page
+Quote Post
abort
post 16.10.2012, 12:15:25
Post #9





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

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


Wiesz co? Ograniczanie się do "nadania uprawnień do /var/www" mogą sugerować tylko takie osoby, które nigdy nie administrowały Apachem z virtualkami. Poza tym, prawa 777 na katalog do uploadu zdjęć to jedyne znane mi rozwiązanie - jeśli masz/znasz jakieś inne, to zaprezentuj.
A "psucie" przez Apache i PHP to był mój komentarz do Twojej propozycji nadania praw do grupy z uprawnieniami roota. Z kilku powodów: bo jest to DUPNA dziura w security. Znacznie większa niż 777 na JAKIŚ JEDEN katalog.

A wracając do meritum: zaproponuj jakieś rozwiązanie na problem z pierwszego posta albo zamilcz.

P.S.
Jeśli chcesz, możemy dyskusję przenieść na PW.
Go to the top of the page
+Quote Post
cudny
post 16.10.2012, 13:45:14
Post #10





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


Cytat(abort @ 16.10.2012, 11:15:25 ) *
A wracając do meritum: zaproponuj jakieś rozwiązanie na problem z pierwszego posta albo zamilcz.


To było nie miłe, a co katalogów z fotkami to ja nigdy tam nie daje 777 exclamation.gif! - wystarczy is_dir( .. ) i utworzyć w razie potrzeby.
Nadawanie uprawnień 777 to dostęp nie tylko dla apache ! Poza tym po co ci prawo do wykonywania plików dla obrazków, co ?
Linux jest bezpieczny właśnie dzięki swoim ograniczonym uprawnieniom dla danych aplikacji / userów !
A dla twojej wiadomości korzystam tylko z VPS, niestety jeszcze nie stać mnie na dedyka.
Tak na prawdę wygodniej i taniej było by hostingować to na jakiś serwisach, ale korzystam nie tylko z apache, ale także z node.js więc potrzebuję pełnego dostępu do serwera.

A na PW nie mam czasu i potrzeby

Ten post edytował cudny 16.10.2012, 13:45:35


--------------------
..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
Go to the top of the page
+Quote Post
Uriziel01
post 16.10.2012, 13:58:31
Post #11





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

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


Cytat(cudny @ 16.10.2012, 14:45:14 ) *
To było nie miłe, a co katalogów z fotkami to ja nigdy tam nie daje 777 exclamation.gif!


I to że ty nigdy tego nie robisz miało przekonać Twojego dyskutanta ? Nie widzę żadnego horroru w nadaniu (ale jest to EWENTUALNY punkt zainteresowania, to przyznaje), 777, z usuwaniem flagi wykonywalności nie ma co kombinować bo i tak mając w i interpreter PHP'a atakujący może zrobić dosłownie wszystko.
Go to the top of the page
+Quote Post
abort
post 16.10.2012, 18:06:12
Post #12





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

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


Cytat(cudny @ 16.10.2012, 14:45:14 ) *
To było nie miłe, a co katalogów z fotkami to ja nigdy tam nie daje 777 exclamation.gif! - wystarczy is_dir( .. ) i utworzyć w razie potrzeby.

To nie miało być niemiłe (potrafię być bardziej niemiły) - miało "tylko" spowodować, byś czasem pomyślał o tym, że ktoś inny wypowiadający się na forum TAKŻE może mieć wiedzę - takiej postawy w Twoich wypowiedziach jakoś nie odczułem. Choć z drugiej strony, jeśli poczułeś się urażony, to przepraszam.

Oczywiście, można i tak - choć nie zawsze się da (vhost w katalogu usera i konto z dostępem FTP czy nawet ssh) - Apache działa z innymi prawami dostępu niż ma user poprzez połączenia via ftp/ssh - tu z reguły daje się prawa 777 (lub nawet 1777), choć czasami da się pogłówkować, i zrobić tak, żeby nie dawać 777

Cytat(cudny @ 16.10.2012, 14:45:14 ) *
Nadawanie uprawnień 777 to dostęp nie tylko dla apache ! Poza tym po co ci prawo do wykonywania plików dla obrazków, co ?

Autor wątku (Solaris2001) napisał w trzecim poście: "Już działa. Chodziło o to, że folder img nie miał ustawionych CHMODów na 777." Musisz dać prawo "x" na katalog, by go odczytać (wylistować czy "wejść" do niego). Najważniejszą rzecz wytłuściłem. Poza tym, o zapobieganiu wykonywania plików (to się robi globalnie dla filesystemu podając flagi dla polecenia 'mount') już w wątku pisałem.

Cytat(cudny @ 16.10.2012, 14:45:14 ) *
Linux jest bezpieczny właśnie dzięki swoim ograniczonym uprawnieniom dla danych aplikacji / userów !

I rozumiem, że to co proponowałeś, czyli nieograniczone powiększenie praw dostępu dla apache (dodanie go do grupy adminów) jest mniejszym złem niż 777 na JEDEN katalog?

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: 22.06.2025 - 16:28