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

Provera tipa fajla pri uploadu

[es] :: PHP :: Provera tipa fajla pri uploadu

Strane: 1 2

[ Pregleda: 4562 | Odgovora: 21 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

kelja

Član broj: 70429
Poruke: 1416
*.115.EUnet.yu.



+35 Profil

icon Provera tipa fajla pri uploadu19.12.2005. u 23:26 - pre 223 meseci
Na koji nacin da proverim da li korisnik uploaduje zaista,recimo,MP3fajl?
Da li su moguca jedino (naravno nesto savrsenija) resenja tipa:
if(!eregi('mp3',$imefajla))die('Pogresan tip fajla!Samo MP3fajlovi...');
ili zaista mogu da proverim tip fajla?
Pomocu $_FILES['uploadovanifile']['type'] recimo?
Hvala!
 
Odgovor na temu

flylord
Ilić Aleksandar
Simplicity d.o.o.
Nis/Uzice

Član broj: 2954
Poruke: 3859
..nis1-nis.customer.sbb.co.yu.

ICQ: 4849714


+68 Profil

icon Re: Provera tipa fajla pri uploadu19.12.2005. u 23:30 - pre 223 meseci
u $_FILES imas mime tip tog fajla, koji je jako precizan i prepoznaje po defaultu malo veci broj fajlova :)
 
Odgovor na temu

bojan_bozovic

Član broj: 29028
Poruke: 3292
*.pat-pool.le.sbb.co.yu.

Sajt: angelstudio.org


+392 Profil

icon Re: Provera tipa fajla pri uploadu19.12.2005. u 23:31 - pre 223 meseci
Citat:
Pomocu $_FILES['uploadovanifile']['type'] recimo?


Prvo, moras da budes siguran da ce browser zaista da posalje MIME tip za fajl (IE6 to ne cini, zato sam ja morao da izbacim proveru MIME tipa na mom sajtu da bi forma za registraciju/upload radila sa IE)

Sto se tice provere tipa fajlova ja resamplujem fajl - pri uploadu napravim (sa GD) fajl iste velicine, probam da ucitam sliku i ako GD uspe da procita sliku, tek onda pisem u bazu, a za MP3 sumnjam da ce ti to pomoci...
 
Odgovor na temu

kelja

Član broj: 70429
Poruke: 1416
*.115.EUnet.yu.



+35 Profil

icon Re: Provera tipa fajla pri uploadu20.12.2005. u 00:01 - pre 223 meseci
Hvala na brzim odgovorima!
Evo za sve kojima treba nesto slicno:
Provera tipa fajla(MP3)

$tip=$_FILES['uploadedfile']['type'];
if($tip!="audio/mpeg")die('Pogresan tip fajla!Samo MP3fajlovi...');
Testirao sam ovo u lokalu(U IE6 izmedju ostalog)i cini se da funkcionise...
Evo sad sam probao i online i cini se da sve radi dobro(cak i u IE6)!



[Ovu poruku je menjao kelja dana 20.12.2005. u 01:09 GMT+1]

[Ovu poruku je menjao kelja dana 20.12.2005. u 01:19 GMT+1]
 
Odgovor na temu

bojan_bozovic

Član broj: 29028
Poruke: 3292
*.pat-pool.le.sbb.co.yu.

Sajt: angelstudio.org


+392 Profil

icon Re: Provera tipa fajla pri uploadu20.12.2005. u 07:45 - pre 223 meseci
Citat:

$allowedMIME = array('image/jpeg','image/jpg','image/png');
.....
$returnvalue=true;
.....
//if (!in_array($file['type'], $allowedMIME)) $returnvalue=false;
....
return $returnvalue;


Ovo je kod mene problematicni kod... Na svakom browseru koga sam mogao da se docepam radi perfektno, a na IE6 ne radi... Ne bi ni znao da mi jedan clan nije poslao e-mail da ceo dan ima problema da se registruje!
 
Odgovor na temu

sale83
Australia
Sydney

Član broj: 41625
Poruke: 729
*.inabox.net.



+30 Profil

icon Re: Provera tipa fajla pri uploadu20.12.2005. u 08:02 - pre 223 meseci
Ja cesto koristim i ovo:
Code:

$dozvoljene_existencija = array(".mp3",".wma");

$ext = strrchr($_FILES['fileupload'][name],'.');

if(!in_array($ext,$dozvoljene_existencija)) {

// nece moci ove noci ... 

exit();

}




Citat:
Prvo, moras da budes siguran da ce browser zaista da posalje MIME tip za fajl (IE6 to ne cini, zato sam ja morao da izbacim proveru MIME tipa na mom sajtu da bi forma za registraciju/upload radila sa IE)


Jesi siguran da IE6 ne CINI ??????
Pa ja nisam imao problema sa time na IE6 WinXP pro without SP2 !!!!


[Ovu poruku je menjao sale83 dana 20.12.2005. u 09:05 GMT+1]
Sto mozes danas ne ostavljaj za sutra!
 
Odgovor na temu

bojan_bozovic

Član broj: 29028
Poruke: 3292
*.pat-pool.le.sbb.co.yu.

Sajt: angelstudio.org


+392 Profil

icon Re: Provera tipa fajla pri uploadu20.12.2005. u 08:21 - pre 223 meseci
@sale

Forma se nalazi na http://maestitia.net/register.php a ceo kod koji ne prolazi

Citat:

function checkuploadedfile($file) {
$maxupload = 262144;
$allowedMIME = array('image/jpeg','image/jpg','image/png');
$returnvalue=true;
if ($file['size'] > $maxupload) $returnvalue=false;
//if (!in_array($file['type'], $allowedMIME)) $returnvalue=false;
return $returnvalue;
}


Dakle, morao sam da komentarisem proveru MIME tipa inace sa IE6 non stop vraca false! Moguce je da je do forme... Isti kod je radio i u IE6 pre modifikovanja i usloznjavanja forme...
 
Odgovor na temu

valeksa
Vladan Aleksic
Beograd

Član broj: 33124
Poruke: 46
80.93.229.*



Profil

icon Re: Provera tipa fajla pri uploadu20.12.2005. u 09:00 - pre 223 meseci
Nesto savim OT.

Cesto vidjam da programeri u svojim funkcijama za provere, primenjuju metod 'dopusti sve-zabrani pojedinacno'.

Code:

function checkuploadedfile($file) {
  $maxupload = 262144;
  $allowedMIME = array('image/jpeg','image/jpg','image/png');
  $returnvalue=true;
  if ($file['size'] > $maxupload) $returnvalue=false;
  //if (!in_array($file['type'], $allowedMIME)) $returnvalue=false;

  return $returnvalue;
}



Mislim da je to losa navika.
Trebalo bi primenjivati metod 'zabrani sve-dopusti pojedinacno'.

Znaci ovaj primer bi bio:
Code:

function checkuploadedfile($file) {
  $maxupload = 262144;
  $allowedMIME = array('image/jpeg','image/jpg','image/png');
  $returnvalue=FALSE;
  if ($file['size'] <= $maxupload) $returnvalue=TRUE;
  //if (in_array($file['type'], $allowedMIME)) $returnvalue=TRUE;

  return $returnvalue;
}



Na ovaj nacin imate potpunu kontrolu sta se desava i nepoznate vrednosti ne mogu da ugroze vas kod..

Gomila sigurnosnih propusta se desava bas zbog ovakvog stila provera..


Pozdrav,
Vladan
 
Odgovor na temu

sale83
Australia
Sydney

Član broj: 41625
Poruke: 729
*.inabox.net.



+30 Profil

icon Re: Provera tipa fajla pri uploadu20.12.2005. u 09:28 - pre 223 meseci
Ja bas nevidim neku razliku izmedju tvog (valeksa) i njegovog koda.



@ bojan_bozovic
Code:

function checkuploadedfile($file) {
  $maxupload = 262144;
  $allowedMIME = array('image/jpeg','image/jpg','image/png');
  $returnvalue=true;
  if ($file['size'] > $maxupload) $returnvalue=false;

  //if (!in_array($file['type'], $allowedMIME)) $returnvalue=false;

  return $returnvalue;
}



@ valeksa
Code:

function checkuploadedfile($file) {
  $maxupload = 262144;
  $allowedMIME = array('image/jpeg','image/jpg','image/png');
  $returnvalue=FALSE;
  if ($file['size'] <= $maxupload) $returnvalue=TRUE;
  //if (in_array($file['type'], $allowedMIME)) $returnvalue=TRUE;

  return $returnvalue;
}




Sve to moze ovako da se napise

Code:

function checkuploadedfile($file) {
  $maxupload = 262144;
  $allowedMIME = array('image/jpeg','image/jpg','image/png');
  if (!in_array($file['type'], $allowedMIME) or ($file['size'] > $maxupload)) return false;
  // Ako je potrebno
  //else return true;
}


Sto mozes danas ne ostavljaj za sutra!
 
Odgovor na temu

valeksa
Vladan Aleksic
Beograd

Član broj: 33124
Poruke: 46
80.93.229.*



Profil

icon Re: Provera tipa fajla pri uploadu20.12.2005. u 10:15 - pre 223 meseci
Citat:

Ja bas nevidim neku razliku izmedju tvog (valeksa) i njegovog koda.


Razlika i ne postoji, samo je stvar nacina kako pristupas...

Vise sam govorio o nacinu i principima pisanje koda. Konretan primer nije reprezentativan u tom smislu.

Zamisli da radis sa nepoznatim skupom vrednostima...kao na primer tipovi protokola...
pa shodno tome radis neke akcije. Sta ce se desiti kada se pronadje neki nov protokol?

Po nacinu koji je gore implementiran izasao bi sa TRUE vrednostima...
Mislim da je ispravnije izlaziti sa FALSE vrednostima da ne bi u pozivajucem kodu implementirao dodatne kontrole...

Ovako ti je sve u funkciji koja i treba da radi to sto radi - kontrolu,
znaci nemas rasipanja koda tj. da se ista stvar radi na vise razlitih mesta u kodu..

Stvar je samo principa i nacina kako se programira i sa tog aspekta i moj komentar.

Pozdrav,
Vladan




 
Odgovor na temu

bzero
dev null
europe

Član broj: 5907
Poruke: 371
..mtsns-ns.customer.sbb.co.yu.

Jabber: bzero@elitesecurity.org
Sajt: www.google.com/search?q=b..


Profil

icon Re: Provera tipa fajla pri uploadu20.12.2005. u 10:42 - pre 223 meseci
Citat:

Code:

$allowedMIME = array('image/jpeg','image/jpg','image/png');
.....
$returnvalue=true;
.....
//if (!in_array($file['type'], $allowedMIME)) $returnvalue=false;
....
return $returnvalue;



Ovo nece raditi kako treba, zbog toga sto IE salje mime type za jpg kao: image/pjpeg.
Never trust an operating system you don't have sources for.
 
Odgovor na temu

bojan_bozovic

Član broj: 29028
Poruke: 3292
*.pat-pool.le.sbb.co.yu.

Sajt: angelstudio.org


+392 Profil

icon Re: Provera tipa fajla pri uploadu20.12.2005. u 16:40 - pre 223 meseci
@valeksa

Logicki isto mu dodje - ako MIME nije u nizu vraca se false

@bzero

Probacu da dodam i image/pjpeg u $allowedMIME
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
*.yu1.net.

Sajt: https://avramovic.info


+46 Profil

icon Re: Provera tipa fajla pri uploadu20.12.2005. u 20:59 - pre 223 meseci
Ja proverim ekstenziju fajla, pa ako hoce da mi uploaduje PHP skriptu sa ekstenzijom mp3, neka izvoli :)

Code:
$fileinfo = pathinfo($_FILES['file']['name']);
$extension = $fileinfo['extension'];

if ($extension != 'mp3') { die ("Crkni 'akeru!"); }


...mp3 zameniti svojom ekstenzijom, a gore u $_FILES file zameniti imenom polja za fajl (u formi)...
Laravel Srbija.

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

bojan_bozovic

Član broj: 29028
Poruke: 3292
*.pat-pool.le.sbb.co.yu.

Sajt: angelstudio.org


+392 Profil

icon Re: Provera tipa fajla pri uploadu20.12.2005. u 22:06 - pre 223 meseci
Citat:
Ja proverim ekstenziju fajla, pa ako hoce da mi uploaduje PHP skriptu sa ekstenzijom mp3, neka izvoli :)


Code:
$fileinfo = pathinfo($_FILES['file']['name']);
$extension = $fileinfo['extension'];

if ($extension != 'mp3') { die ("Crkni 'akeru!"); }


...mp3 zameniti svojom ekstenzijom, a gore u $_FILES file zameniti imenom polja za fajl (u formi)...


Ja nista move_uploaded_file dok se sve ne proveri, a ovaj tvoj kod nije bas najbolji ;) BTW uopste i ne koristim move_uploaded_file ;) Ne bih bas o kodu ;)
 
Odgovor na temu

kelja

Član broj: 70429
Poruke: 1416
*.123.eunet.yu.



+35 Profil

icon Re: Provera tipa fajla pri uploadu21.12.2005. u 00:14 - pre 223 meseci
Sve u svemu,izgleda da nema nacina da se spreci 'aker,bar kad su u pitanju mp3 fajlovi.Ako neko bas zeli da bude zloban,napravice txt fajl(ili nesto gore)preimenovati ga u 'pesma.mp3',uploadovati ga i uzivati u plodovima svog nestasluka... :-(
Dobro je,ipak,sto vecina obicnih korisnika to ne zna,pa se mogu zavarati obicnom proverom ekstenzije:-)
Ja sam zaista pocetnik u ovoj oblasti(PhP)i voleo bih da neko demantuje ovo sto sam napisao,ali to sam cuo od iskusnog programera,tako da...






[Ovu poruku je menjao kelja dana 21.12.2005. u 01:15 GMT+1]
 
Odgovor na temu

sale83
Australia
Sydney

Član broj: 41625
Poruke: 729
*.inabox.net.



+30 Profil

icon Re: Provera tipa fajla pri uploadu21.12.2005. u 03:32 - pre 223 meseci
Prvo sta ti vredi ako napises u notpade PHP kod i snimis sa existencijom .mp3 i uplodujes na server ????

Mislis da ces time da ugorzis bezbednost servera kao sa .gif i .jpg .php .txt itd ???

ODGOVOR JE NE !!!

MP3 Fajl koji u sebi zadrzi PHP kod u 99,99% slucajeva ne moze da ugorzi bezbednost servera !!

Svaki browser .mp3 existenciju ce da downloduje tako da je nece otvoriti kako .jpg ili .gif i omoguciti izvrsavanje malicijoznog php koda u doticnom fajlu.!!

Jos nisam nisao na nijedan slucaj da je server nastradao preko .mp3 existencije.!!
Sto mozes danas ne ostavljaj za sutra!
 
Odgovor na temu

kelja

Član broj: 70429
Poruke: 1416
*.125.EUnet.yu.



+35 Profil

icon Re: Provera tipa fajla pri uploadu21.12.2005. u 10:51 - pre 223 meseci
LM,Sale niko nije pominjao ugrozavanje bezbednosti servera...Ono 'aker bila je aluzija na jedan od postova...
Takodje,onaj primer sa txt fajlom nije verovatno najreprezentativniji,ali zamisli sledecu situaciju...Aplikacija koja omogucuje da korisnici uploaduju svoju muziku i da je slusaju na mp3 flash playeru...

1.Forma za registraciju i upload mp3 fajlova
2.Imena(mp3?)fajlova i putanje do njih se automatski smestaju u playlistu flash playera(koja se nalazi na nekom txt ili XML fajlu)
3.Player streamuje izabrane(mp3?)pesme
4.Slusaoci uzivaju
E,sad sta bi se desilo da neki 'nestasni djecarac' umesto pesme posalje ogroman fajl(koji nije pesma) sa ekstenzijom MP3?
Da li bi player radio streaming i na kraju pustio 'pesmu'ili bi prijavio gresku???
Offline-player radi streaming tisine:-)
Kad sam pomenuo mogucnost zloupotreba pre svega sam ovakve mogucnosti imao u vidu.Ono sto me zanima je da li postoji nacin zastite od ovakvih incidenata,ili ostaje da se uzdamo u ljudsku neiskvarenost?
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
*.yu1.net.

Sajt: https://avramovic.info


+46 Profil

icon Re: Provera tipa fajla pri uploadu21.12.2005. u 14:03 - pre 223 meseci
Citat:
bojan_bozovic: Ja nista move_uploaded_file dok se sve ne proveri, a ovaj tvoj kod nije bas najbolji ;) BTW uopste i ne koristim move_uploaded_file ;) Ne bih bas o kodu ;)


Pa meni move_uploaded_file ide posle. Ajde reci zasto moj kod nije bas najbolji? Obrazlozi to sto kazes, nemoj tek tako da pricas....

@kelja: Nikada im ne bih dozvolio da preslusaju uploadovanu pesmu :D Mislim, chemu to? Valjda imaju neki mp3 plejer :)

[Ovu poruku je menjao JaHvram dana 21.12.2005. u 15:07 GMT+1]
Laravel Srbija.

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

bojan_bozovic

Član broj: 29028
Poruke: 3292
*.pat-pool.le.sbb.co.yu.

Sajt: angelstudio.org


+392 Profil

icon Re: Provera tipa fajla pri uploadu21.12.2005. u 22:58 - pre 223 meseci
@Jahvram

Zato sto treba da se mucne glavom - MP3 ima svoj standard za header, tj. izmedju ostalog i magic bytes u hheaderu ;) $_FILES["upload"]["tmp_name"] otvoris i citas sa fread da li je, u stvari, to MP3 po headeru ;)
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
*.yu1.net.

Sajt: https://avramovic.info


+46 Profil

icon Re: Provera tipa fajla pri uploadu22.12.2005. u 12:04 - pre 223 meseci
Ma ok je sve to, ja sam onaj primer prilagodio temi (mp3 ekstenzija), a u principu nikad nisam ni radio tako nešto - radio sam samo na uploadu tekstualnih fajlova. Ali opet ne kontam zašto moj kod ne valja kad sam prilično siguran da mi ne može nauditi ako uploaduje PHP fajl sa ekstenzijom mp3...
Laravel Srbija.

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

[es] :: PHP :: Provera tipa fajla pri uploadu

Strane: 1 2

[ Pregleda: 4562 | Odgovora: 21 ] > FB > Twit

Postavi temu Odgovori

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