Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Skrypt uploadu - blokowanie uploadowania innych plikow niz obrazki
o2w5n778
post
Post #1





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 10.12.2009

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


Witam!
Czy ktoś może wie co zrobic aby w tym skrypcie dało się uploadować tylko obrazki?

Kod:
  1. <?
  2. $site ="http://adres.pl/"; // adres strony na kocu pamitaj o /
  3. ?>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  8. <title>Dokument bez tytuu</title>
  9. </head>
  10.  
  11. <body>
  12.  
  13. <?php
  14. if ($_POST['dodaj']) {
  15.  
  16. $plik_nazwa = trim($_POST['plik_nazwa']);
  17. $plik_tmp = $_FILES['foto']['tmp_name'];
  18. $plik_nazwa = $_FILES['foto']['name'];
  19. $ext = pathinfo($plik_nazwa, PATHINFO_EXTENSION);
  20. $kodowanie = md5($_POST['plik_nazwa']);
  21. $lacz = $kodowanie.$ext;
  22.  
  23. if(is_uploaded_file($plik_tmp)) {
  24. move_uploaded_file($plik_tmp, "../uploads/galeria/$lacz");
  25. echo "Plik: <strong>$plik_nazwa</strong> zosta przesany na serwer!<br>";
  26. print 'link dla forum: <input type="text" value="'.$site.''.$plik_nazwa.'" size="40" /><br>';
  27. print 'link dla przegldarki: <input type="text" value="'.$site.''.$plik_nazwa.'" size="40" /><br>';
  28. print 'kod dla html: <input type="text" value="<img src=&quot;'.$site.''.$plik_nazwa.'&quot; alt=&quot;aduje&quot; />" size="40" /><br>';
  29. /* Komenda Sprawdzajca Dziaanie Uploadu Zdjcia */
  30. }
  31.  
  32. }
  33. ?>
  34.  
  35. <div id="okno">
  36. <form enctype="multipart/form-data" action="index.php" method="POST" name="newad">
  37. <div class="oknoDane">
  38. <p class="oknoDanePotrzebne">Podaj Potrzebne Dane:</p>
  39. <table><tr>
  40. <td><table><tr>
  41. <td>fotografia:</td><td><input type="file" name="foto" class="nazwy" /></td></tr></table></td>
  42. </tr></table>
  43. </div>
  44. <div class="pagesPrzyciski">
  45. <input type="submit" name="dodaj" class="pages" value="Dodaj" />
  46. <input type="reset" class="pages" value="Resetuj" />
  47. <input type="button" class="pages" onclick="java script:history.back();" name="wstecz" value="Wstecz" />
  48. </div>
  49. </form>
  50. </div>
  51. </body>
  52. </html>


Ten post edytował o2w5n778 3.08.2010, 22:06:06
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Pilsener
post
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Zapomnij o takim uploadzie, bo jakiś dzieciak albo bot w 5 minut Ci się włamie. Zasada jest prosta i jedyna: wrzucać pliki do bezpiecznego folderu (takiego, gdzie wpisanie folder/plik.jakis nic nie da pomimo poprawnej ścieżki).

A jak sprawić, by były tylko fotki?
1. Zapisujesz plik w bezpiecznym folderze
2. Sprawdzasz jego typ MIME, metod jest wiele, choćby imagickiem:
  1. $picture = new Imagick('safe_folder/1234');
  2. $extension = $picture->getimageformat();
albo przy pomocy "gołego" php:
http://pl.php.net/manual/pl/function.finfo-file.php
Albo przy pomocy biblioteki GD
3. Jeśli typ jest zgodny, to zapisujesz do bazy informację o nim, jeśli nie - plik kasujesz i siema
4. Przy downloadzie pobierasz plik z bezpiecznego folderu i wysyłasz jako obrazek (gif, jpg, png - info o tym pobierasz z bazy), nawet jeśli będzie to jakiś złośliwy kod wysyłając go w taki sposób:
  1. $img = file_get_contents($path);
  2. header('Content-Type: image/jpeg');
  3. echo $img;
- dzieciak może nam skoczyć
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: 16.10.2025 - 15:42