Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kopiranje fajla (slike) sa jednog na drugi server - pitanje sigurnosti

[es] :: PHP :: Kopiranje fajla (slike) sa jednog na drugi server - pitanje sigurnosti

[ Pregleda: 1674 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ksrele
Programer - informatičar
Gold Drink D.O.O. Subotica
Subotica

Član broj: 14253
Poruke: 1642
*.dynamic.isp.telekom.rs.

ICQ: 66444502


+47 Profil

icon Kopiranje fajla (slike) sa jednog na drugi server - pitanje sigurnosti19.02.2012. u 17:02 - pre 148 meseci
Znam da je bilo brdo prica oko samog kopiranja, ali ja bih hteo da malo produbim tu pricu.

Znam kako da iskopiram file pomocu cUrl-a, postoji cak i Copy funkcija u samom PHP-u koja to sama radi, to nije problem, ali je problem u sigurnosti.
Naime, ja znam nacin da na osnovu vracenog headera vidim koji je mimetype u pitanju. Recimo, meni trebaju samo slike, nista vise se NE SME preneti.

Znaci, napravio sam stranicu gde korisnik moze da uploaduje sliku i to radi OK, ali bi hteo da napravim da moze i samo da upise putanju ka nekoj slici koja je vec na netu i da je onda sistem sam dovuce i postavi na server.
Sve to u pocetku zvuci prosto. U sustini, na sve strane na netu postoji objasnjenje kako se ovo radi, ali nigde jos nisam video takvu skriptu koja ima i proveru tipa fajla.

Upravo sam probao da na server uploadujem .php fajl ali da ga rename-ujem u .jpg i pustio skriptu da testiram velicinu i tip fajla, i dobio sam odgovor da je u pitanju slika... kako to?

Evo koda funkcije koja proverava velicinu i tip fajla:
Code (php):

<?php  
    function get_remote_file_info($url){  
        $uh = curl_init();  
        curl_setopt($uh, CURLOPT_URL, $url);  
        curl_setopt($uh, CURLOPT_NOBODY, 1);  
        curl_setopt($uh, CURLOPT_HEADER, 1);  
     curl_setopt($uh, CURLOPT_RETURNTRANSFER, 1);

          $exe = curl_exec($uh);

         
          $code = curl_getinfo($uh,CURLINFO_HTTP_CODE);
         
          if($code <> 200) return "Error";
       
        $mime_type = curl_getinfo($uh,CURLINFO_CONTENT_TYPE);
        $filesize = curl_getinfo($uh,CURLINFO_CONTENT_LENGTH_DOWNLOAD);
 
        curl_close($uh);  
     
        // push out  
        return array("size"=>$filesize, "mime_type" => $mime_type);  
    }
 

Edit: slucajno sam stavio pogresnu verziju funkcije... :)
 
Odgovor na temu

PHPovac

Član broj: 300013
Poruke: 168
*.dynamic.isp.telekom.rs.



+19 Profil

icon Re: Kopiranje fajla (slike) sa jednog na drugi server - pitanje sigurnosti29.02.2012. u 10:09 - pre 147 meseci
Code (php):

    function get_remote_file_info($url){  
        $uh = curl_init();  
        curl_setopt($uh, CURLOPT_URL, $url);  
        curl_setopt($uh, CURLOPT_NOBODY, 1);  
        curl_setopt($uh, CURLOPT_HEADER, 1);  
     curl_setopt($uh, CURLOPT_RETURNTRANSFER, 1);

          $exe = curl_exec($uh);

         
          $code = curl_getinfo($uh,CURLINFO_HTTP_CODE);
         
          if($code <> 200) return "Error";
       
        $mime_type = curl_getinfo($uh,CURLINFO_CONTENT_TYPE);
        $filesize = curl_getinfo($uh,CURLINFO_CONTENT_LENGTH_DOWNLOAD);
 
        curl_close($uh);  
          $da_li_je_slika = 'ne';
          $arr = array('gif','jpg','png', 'jpeg');

foreach($arr as $search_needle) {

   if(stristr($mime_type, $search_needle) != FALSE) {
       $da_li_je_slika = 'da';
   }

}
        // push out  
        return array("size"=>$filesize, "mime_type" => $mime_type, "slika" => $da_li_je_slika);  
    }
print_r(get_remote_file_info('https://static.elitesecurity.org/online.gif'));
print_r(get_remote_file_info('https://static.elitesecurity.org/'));
 

Sve to postoji na php.net...
 
Odgovor na temu

ksrele
Programer - informatičar
Gold Drink D.O.O. Subotica
Subotica

Član broj: 14253
Poruke: 1642
*.adsl.eunet.rs.

ICQ: 66444502


+47 Profil

icon Re: Kopiranje fajla (slike) sa jednog na drugi server - pitanje sigurnosti29.02.2012. u 13:31 - pre 147 meseci
Cini mi se da ovaj kod nece da radi u mom slucaju. Koristi se ista funkcija curl_getinfo($uh,CURLINFO_HTTP_CODE)

U sustini, pricao sam sa jednim covekom i rekao mi je da nije toliki sigurnosni propust kada se na server uploaduje neki file pod laznom ekstenzijom slike, jer se on sam od sebe svakako nece izvrsiti... E sad, jedino da mu verujem na rec jer ja nemam iskustva sa ovim.
 
Odgovor na temu

PHPovac

Član broj: 300013
Poruke: 168
*.dynamic.isp.telekom.rs.



+19 Profil

icon Re: Kopiranje fajla (slike) sa jednog na drugi server - pitanje sigurnosti29.02.2012. u 21:07 - pre 147 meseci
Ne razumem zašto kod ne bi radio, ja sam ga testirao i radio je kako treba...
 
Odgovor na temu

ksrele
Programer - informatičar
Gold Drink D.O.O. Subotica
Subotica

Član broj: 14253
Poruke: 1642
*.adsl.eunet.rs.

ICQ: 66444502


+47 Profil

icon Re: Kopiranje fajla (slike) sa jednog na drugi server - pitanje sigurnosti02.03.2012. u 07:14 - pre 147 meseci
Pa ajde probaj ga na ovaj nacin: uzmi neki .exe ili .js ili .php file i promeni mu ekstenziju u .jpg i uploaduj ga na neki server. Zatim sa drugog servera pokreni ovu PHP skripticu i proveri tip fajla. Meni ispise da je taj file slika iako u sutini nije slika, vec je samo ima ekstenziju od slike.
Mozda kod mene nije nesto dobro podeseno... nemam pojma, nikad se nisam bavio sa ovim pa ako bi mi neko pomogao bilo bi super.

Sad za sad sam napravio tako da se file uploaduje i onda se na serveru proveri sadrzaj fajla, ako je prvih par bajta sumnjivo onda se file odbacuje.
U sustini, sada mi je pala ideja da se napravi tako da pomocu cUrl-a procitam prvih nekoliko bajta udaljenog fajla i proverim da li je silka ili neki drugi file u pitanju.
Potrazicu na netu takvo resenje.
 
Odgovor na temu

PHPovac

Član broj: 300013
Poruke: 168
*.dynamic.isp.telekom.rs.



+19 Profil

icon Re: Kopiranje fajla (slike) sa jednog na drugi server - pitanje sigurnosti02.03.2012. u 07:34 - pre 147 meseci
ne kod tebe je lepo podešeno. ja sam ručno podešavao vps da ne ignoriše ekstenziju fajla... ali postoje neki serveri koji pokreću i .php i jpg itd kao php skript...

btw mislio sam da is rekao da moj kod za proveru neće raditi a ne php u .jpg

[Ovu poruku je menjao PHPovac dana 02.03.2012. u 09:17 GMT+1]
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
*.dynamic.isp.telekom.rs.

Sajt: https://avramovic.info


+46 Profil

icon Re: Kopiranje fajla (slike) sa jednog na drugi server - pitanje sigurnosti02.03.2012. u 22:55 - pre 147 meseci
Većina servera neće tek tako izvršiti fajl ako ima ekstenziju drugačiju od .php (i .html).

Ipak, najsigurnije je da iskopiraš fajl, proveriš da li je slika ili ne, i ako nije obrišeš ga.

Pogledaj ovu f-ju: http://php.net/getimagesize
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

[es] :: PHP :: Kopiranje fajla (slike) sa jednog na drugi server - pitanje sigurnosti

[ Pregleda: 1674 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.