Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Upload plików
Forum PHP.pl > Forum > PHP
Macok
Mam taki kod służący do uploadu obrazków.
Czy istnieją jakieś inne metody na zabezpieczenie sie przed hackerami, próbującymi uploadowac na serwer plikow do kradniecia danych?
  1. <?php
  2. $max_rozmiar = 1024*1024;
  3. if (is_uploaded_file($_FILES['plik']['tmp_name'])) {
  4. if ($_FILES['plik']['size'] > $max_rozmiar) {
  5. echo 'Błąd! Plik jest za duży!';
  6. } else {
  7. echo 'Odebrano plik. Początkowa nazwa: '.$_FILES['plik']['name'];
  8. echo '<br/>';
  9. if (isset($_FILES['plik']['type'])) {
  10. echo 'Typ: '.$_FILES['plik']['type'].'<br/>';
  11. }
  12. move_uploaded_file($_FILES['plik']['tmp_name'],
  13. $_SERVER['DOCUMENT_ROOT'].'/foto/'.$_FILES['plik']['name']);
  14. }
  15. } else {
  16.  echo 'Błąd przy przesyłaniu danych!';
  17. }
  18.  
  19. ?>
mdco
W skrypcie trzeba zawrzeć warunek aby nie mogli wrzucać plików wykonywalnych, czyli np. plików z rozszerzeniem php.
revyag
Możesz sprawdzać mime type uploadowanego pliku. Masz go w
  1. <?php
  2. $_FILES['plik']['type']
  3. ?>
Macok
Dzieki, wygląda na to ze sie udalo.
Mam jeszcze 2 pytania.

1. Jesli ktos uploaduje plik o nazwie ktora jest juz na serwerze to stary plik sie usuwa. Co zrobic zeby tak sie niedzialo?
2. Jak potem wyswietlic te pliki na stronie?
yaro
proponuje sprawdzanie pliku po jego rozszerzeniu ale nie po mime, bo mime może być inne niż w rzeczywistości jest plik.

is_file() - sprawdzanie czy już taki plik istnieje

a tak można sprawdzić czy jest to grafika
Kod
$x = getimagesize($_FILES['plik']['tmp_name']);
if(!is_array($x) || $x[0] < 2))
{
    echo "Zły plik graficzny";
}


Jeszcze proponuje sprawdzić czy nie jest to jakiś plik 1x1000px
Kod
list($width $height) = getimagesize($_FILES['plik']['tmp_name']);
jarrod
Cytat(yaro @ 14.10.2006, 21:36:37 ) *
Kod
$x = getimagesize($_FILES['plik']['tmp_name']);

ja bym do tego dodał @ aby wygłuszyć błędy:
Kod
$x = @getimagesize($_FILES['plik']['tmp_name']);
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.