Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> dołączanie plików graficznych
qbal
post 25.02.2007, 23:14:10
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 24.11.2006

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


Witam!

W serisie który projektuje mam zrobić możliwość dodawania zdjęć.
Jak najbezpieczniej to zrobic?

Moj plan jest tak:
1.w formularzy chce umiescic pole MAX_FILE-SIZE=1000, aby przegladarka mogla odrzucic wieksze pliki.
Ale czytalem ze to mozna latwo obejsc, wiec wielkosc pliku sprawdze jeszcze po zaladowaniu go na serwer.
2.Zaladowane pliki bede umieszczal w tymczasowym katalogu (z uprawnieniami 766).
3. Z nazwy pliku usune wszytkie spacje i pobiore tylko ostatnie 20 znakow (wieksze nazwy sa chyba niepotrzebne, a dlatego od konca zeby miec rozszrzenie pliku).
4.Sprawdze czy rozszerzeniem pliku jest jpg lub png.
5 Zmienie prawa pliku na 644
6. Z pomoca biblioteki GD stworze miniaturki
7. przeniose obrazki do docelowych kalalogow.

Czy moge jeszcze cos dodac?

Szukalem na forum i w google, ale nic konkretnego nie znalazlem.

--
Pozdrawiam
Kuba

Ten post edytował qbal 26.02.2007, 16:06:36
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
nitro18
post 25.02.2007, 23:27:03
Post #2





Grupa: Zarejestrowani
Postów: 311
Pomógł: 7
Dołączył: 2.08.2006
Skąd: Bystrzyca Kłodzka/Nysa

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


1.w formularzy chce umiescic pole MAZ_FILE-SIZE=1000, aby przegladarka mogla odrzucic wieksze pliki.
Ale czytalem ze to mozna latwo obejsc, wiec wielkosc pliku sprawdze jeszcze po zaladowaniu go na serwer.


a możesz mi powiedzieć jak? bo mnie zainteresowało to.
Go to the top of the page
+Quote Post
qbal
post 26.02.2007, 21:31:59
Post #3





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 24.11.2006

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


Nie wiem jak... Tak przeczytalem w ksiazce: PHP5 i MySQL (T.Converse, J.Park C.Morgan)
Nie interesuje sie lamaniem zabezpieczen, ale skoro oni takl pisza to cos w tym jest nie?


Ktos moze stworzyc swoja strone z formularzem z podrobina wartoscie MAX_FILE_SIZE i wyslac na odpowiedni adres (tak przypuszczam po przeczytaniu kilku stron, sam tak nie prubowalem)

Moja wersja kodu do uploadowania plikow graficznych:
  1. <?php
  2. if($_FILES['plik']['error'] == 0)
  3. {
  4. if(!($_FILES['plik']['type'] == 'image/jpeg' || $_FILES['plik']['type'] == 'image/png')) //sprawdzenie typu mime pliku
  5. $this->komunikat[] = 'Niedozwolony format pliku!';
  6. if($_FILES['plik']['size']>1000000)  //gdyby ktos chcial podrobic formularz i zmienil wartosc MAX_FILE_SIZE
  7. $this->komunikat[] = 'Za duży rozmiar pliku!';
  8. if($this->komunikat == NULL) //dodanie pliku
  9. {
  10. $plik = trim($_FILES['plik']['name']); //wyczyszczenie nazwy pliku z poczatkowych i koncowych spacji
  11. $plik = ereg_replace(' ','', $plik); //usuniecie z nazwy spacji
  12. $plik = substr($plik, -20); //pobranie ostatnich 20 znakow nazwy pliku
  13. if(ereg('.jpg',$plik) || ereg('.jpeg',$plik) || ereg('.png',$plik)) //sprawdzenie rozszrzenia pliku
  14. {
  15. if(is_uploaded_file($_FILES['plik']['tmp_name'])) //czy jset uploadowany plik
  16. {
  17. $nazwa_plik=$plik;$i=0;
  18. while (file_exists($this->katalog.'/'.$nazwa_plik)) //sprawdzenie czy istnieje plik o podnaje nazwie, jezeli tak to dodajemy $i;
  19.  {
  20.  $nazwa_plik=$i.$plik;
  21.  $i++;
  22.  }
  23. $sciezka_do_pliku = $this->katalog . $nazwa_plik;
  24. move_uploaded_file($_FILES['plik']['tmp_name'],$sciezka_do_pliku);
  25. chmod($sciezka_do_pliku, 0644); //zmiana praw pliku
  26. $this->komunikat[] = 'Plik został przekazany pomyślnie';
  27. }
  28. else
  29. $this->komunikat[] = 'Przekazanie pliku nie powiodło się';
  30. }
  31. else
  32.  $this->komunikat[] = 'Dozwolone są tylko pliki graficzne!';
  33. }
  34. }
  35. elseif($_FILES['plik']['error'] == 1)
  36. $this->komunikat[] = 'Za duży rozmiar pliku!'; //rozamiar zdefiniowany w php.ini
  37. elseif($_FILES['plik']['error'] == 2)
  38. $this->komunikat[] = 'Za duży rozmiar pliku!'; //rozamiar zdefiniowany w formularzu MAX_FILE_SIZE
  39. else
  40. $this->komunikat[] = 'Inny blad';
  41. ?>


Chyba bedzie nie? A moze macie jakies uwagi jeszcze?

Ten post edytował qbal 26.02.2007, 21:36:34
Go to the top of the page
+Quote Post
Kinool
post 27.02.2007, 00:32:56
Post #4





Grupa: Zarejestrowani
Postów: 560
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Kwidzyn

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


na poczatek move_uploaded_file" title="Zobacz w manualu PHP" target="_manual lub is_uploaded_file" title="Zobacz w manualu PHP" target="_manual

jak juz zosalo napisane do sprawdzania typu nie uzywaj rozszezenia tylko mime $_FILES['plik']['type']

Ten post edytował Kinool 27.02.2007, 00:37:53


--------------------
Go to the top of the page
+Quote Post
qbal
post 27.02.2007, 16:39:47
Post #5





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 24.11.2006

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


Cytat(Kinool @ 27.02.2007, 00:32:56 ) *
na poczatek move_uploaded_file" title="Zobacz w manualu PHP" target="_manual lub is_uploaded_file" title="Zobacz w manualu PHP" target="_manual

jak juz zosalo napisane do sprawdzania typu nie uzywaj rozszezenia tylko mime $_FILES['plik']['type']


czyli jak juz sprawdze typ pliku z $_FILES['plik']['type'] to nie sprawdzac rozszerzenia?
Chcialem to sprawdzic daletgo jakby ktos podrobil formularz... takie drugie zabezpieczenie

Ten post edytował qbal 27.02.2007, 17:37:13
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: 14.08.2025 - 11:00