WebDeveloper
 g│≤wna | forum manual | skrypty |  artyku│y |  projekty | porady |  zasoby |  linki 
dzia│y
  •  manual PHP
  •  skrypty PHP
  •  artyku│y
  •  projekty
  •  porady
  •  zasoby
  •  linki
  •  
    forum
  •  php
  •  apache
  •  mysql
  •  postgresql
  •  faq php
  •  pomocnik php
  •  
    archiwum
  • Nowy dzia│: porady !
  • Kurs PHP
  • Zapisz siΩ na nasz newsletter !
  • Serwery obs│uguj▒ce PHP !
  • Nadchodz▒ zmiany!
  • Zosta± wsp≤│tw≤rc▒ PHP.zone.pl !
  • Jest PHP 4.0.1 !
  • MySql na licencji GPL !
  • Konfiguracja serwera!
  • Forum dyskusyjne otwarte !
  • redakcja

    Je╢li masz ciekawe informacje odno╢nie PHP, skrypty, porady, linki itp. lub chcia│by╢ wsp≤│tworzyµ serwis PHP.zone.pl daj nam znaµ na email !



    dodaj poradΩ !


    Powered by:
    PHP
    Apache
    MySql
    Linux

    users online: 8

    Bezpieczne uploadowanie plik≤w
    ( 21. Wrzesie± 2000)
    ( Pawe│ *peewee* Subocz )

    Na pocz▒tku om≤wie kr≤tko jak w PHP dzia│a uploadowanie plik≤w, a p≤╝niej przejde do sedna problemu.
    Ka┐dy plik wys│any do naszego skryptu za pomoc▒ formularza jest zapisywany do katalogu tymczasowego z unikalna nazw▒ (np. /tmp/php9jsikE). Informacje o tym gdzie siΩ znajduje s▒ zapisywane w odpowiedniej zmiennej.

    Tekst powsta│ na podstawie postu Zeeva Suraskiego na BUGTRAQ'u.
    Na pocz▒tku om≤wie kr≤tko jak w PHP dzia│a uploadowanie plik≤w, a p≤╝niej przejde do sedna problemu.
    Ka┐dy plik wys│any do naszego skryptu za pomoc▒ formularza jest zapisywany do katalogu tymczasowego z unikalna nazw▒ (np. /tmp/php9jsikE). Informacje o tym gdzie siΩ znajduje s▒ zapisywane w odpowiedniej zmiennej. Jej nazwa zale┐y od nazwy wybranej w formularzu. Np. W formularzu napisali╢my: <input type=file name=userfile> w zmiennej $userfile bΩdzie znajdowaµ siΩ scie┐ka do tymczasowego pliku na serwerze.
    Problem polega na tym, ┐e kto╢ mo┐e jako parametr w urlu podaµ userfile z nazwa jakiego╢ normalnego pliku na serwerze.
    Czy to mo┐e nam zaszkodziµ zale┐y tylko od tego, co robimy z danym plikiem. Je╢li kopiujemy go do jakiegos publicznie dostΩpnego miejsca, to mo┐na wpisaµ w swojej przegl▒darce np. http://serwer.pl/upload.php?userfile=/etc/passwd i ju┐ dostajemy pe│n▒ listΩ u┐ytkownik≤w na tym serwerze... Trzeba jednak pamiΩtaµ, ┐e w ten spos≤b mo┐na dostaµ siΩ jedynie do plik≤w, do kt≤rych ma dostΩp user, z prawami kt≤rego dziala demon http (najczΩ╢ciej nobody). Mimo wszystko jest to niebezpieczne.

    Rozwi▒zania:
    Zeev proponuje wy│▒czenie funkcji register_globals, przez co parametry z urla nie zostan▒ wpisane do odpowiadaj▒cym im zmiennym i wyci▒gniΩcie danych z $HTTP_POST_VARS. Jednak moim zdaniem to niewiele pomo┐e bo przecie┐ te informacje mog▒ byµ tak samo sfa│szowane, bΩdzie to tylko wymaga│o trochΩ wiΩcej pracy. Jedynym sensownym rozwi▒zaniem jest dok│adne sprawdzanie pliku, kt≤ry dostajemy.
    Nowe wersje PHP (4.0.3RC1 i 3.0.17RC1) zosta│y ju┐ wyposa┐one w funkcjΩ, kt≤ra pomaga w zabezpieczeniu siΩ przed tego typu oszustwami - is_uploaded_file($sciezka);
    PHP 4.0.3 zawiera tak┐e funkcjΩ move_uploaded_file($sciezka, $nowa_sciezka), kt≤ra kopiuje plik pod warunkiem, ┐e zosta│ zuploadowany.
    Je╢li pracujemy na starszym PHP i nie zamierzamy, lub nie mo┐emy zaktualizowaµ go musimy sami napisaµ odpowiednie funkcje. Mo┐emy np. sprawdziµ datΩ utworzenia domniemanego pliku tymczasowego i odrzuciµ go, je╢li jest mniejsza o np minutΩ.
    Je╢li oczekujemy rysunku to za pomoc▒ funkcji PHP mo┐emy sprawdziµ czy plik rzeczywi╢cie jest rysunkiem.
    Napewno mo┐na wymy╢liµ te┐ inne regu│y specyficzne dla danego typu plik≤w.





    komentarze | strona g│≤wna






    kontakt

    autor:

    Hubert Mierzwiak

    wsp≤│praca:

    Piotr Karolak

    Chcesz prowadziµ sw≤j dzia│ tematyczny typu XML, SQL, admin, JavaScript, itp?
    Napisz do nas !
     
    skrypty
  • designer.zip
  • vipAuth.tgz
  • phpCenzura.tgz
  • vip_php.tgz
  • pomocnik_light
  • ankieta
    Co s▒dzisz o stworzeniu FAQ PHP?
    super!
    po co?

    poprzednie

    newsletter

    wpisz sw≤j email i wci╢nij Enter

    linuxnews.pl
  • KRRiTV stra┐nikiem!?
  • Dzisiejsze zebranie...
  • Felieton w warunkach ekstremalnych
  • Nexidion Designer
  • Solaris OpenSource
  • KDE 2.0.1
  • Jest ju┐ nowy Debian...
  • Tydzie± min▒│...




  • Manual | Skrypty | Artyku│y | Projekty
    Porady | Zasoby | Linki
    G│≤wna | Forum

    Copyright 2000 Hubert Mierzwiak