Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dołączanie plików graficznych
Forum PHP.pl > Forum > PHP
qbal
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
nitro18
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.
qbal
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?
Kinool
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']
qbal
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
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.