content type van plaatjes

Pagina: 1
Acties:

  • DeTeraarist
  • Registratie: November 2000
  • Laatst online: 15-09 12:11

DeTeraarist

#Boots2Asses

Topicstarter
ik heb een script geschreven, waarmee een plaatje ge-upload kan worden. Dit vang ik op, door te kijken wat voor content-type van het bestand is.

Ik heb bij W3C gekeken naar de content-types van plaatjes. Daar werd ik verwezen naar:
ftp://ftp.isi.edu/in-notes/iana/assignments/media-types

Daar vond ik onder andere:
image/bmp
image/gif
image/png
image/jpeg

Nu heb ik 2 jpeg plaatjes (1-tje met photoshop en 1-tje met paint) en als ik die upload vertelt PHP mij, dat de content-type pjpeg is. :?
Ook met PNG plaatjes geeft ie een andere content-type als waar ze bij de W3C over spreken. Namelijk image/x-png.

Mijn vraag is: welke content-types zijn er nu voor plaatjes? (voor gewone PNG's/BMP's/GIF's/JPEG's)
Het zou namelijk best lullig zijn als iemand een normaal plaatje probeert te uploaden en ik dan ga vertellen dat z'n content-type niet goed is.

Soms, als ik heel stil ben, kan ik de zon horen schijnen


  • Yellow|A
  • Registratie: Maart 2000
  • Niet online

Yellow|A

Allotaja of rock and rollah

Eventjes pseudo offtopic, als je een BMP gebruikt op Internet maak je jezelf niet echt populair.

|{ brrr }] |


  • DeTeraarist
  • Registratie: November 2000
  • Laatst online: 15-09 12:11

DeTeraarist

#Boots2Asses

Topicstarter
jaja I know, maar het gaat om het idee.

Soms, als ik heel stil ben, kan ik de zon horen schijnen


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Kun je niet gewoon altijd application/octet-stream gebruiken? Hoeven mensen niet zelf een content-type op te geven.

  • DeTeraarist
  • Registratie: November 2000
  • Laatst online: 15-09 12:11

DeTeraarist

#Boots2Asses

Topicstarter
Dan kunnen ze toch allerlei soorten bestanden uploaden? Ik wil juist dat ze alleen een plaatje kunnen uploaden.

Ik vang na de upload op, wat voor content-type het bestand heeft en besluit daarna of het plaatje gemoved wordt naar een andere dir of dat het plaatje wordt verwijdert.

Soms, als ik heel stil ben, kan ik de zon horen schijnen


  • r.e.n
  • Registratie: Juni 2001
  • Niet online
Die

image/bmp
image/gif
image/png
image/jpeg

zijn MIME-Types. Daardoor weet je browser om wat voor type bestand het gaat.
Wil je weten wat voor type plaat het is na/bij een upload, dan moet je in de header van de plaat gaan kijken. Zo staat bij een .jpg normaliter JFIF in de header.
Ik kan je er verder weinig over vertellen, maar dit moet genoeg info zijn om verder te komen.

  • DeTeraarist
  • Registratie: November 2000
  • Laatst online: 15-09 12:11

DeTeraarist

#Boots2Asses

Topicstarter
Ik zal me gaan verdiepen in de headers van de verschillende plaatjes.

Maar de header is dan toch gewoon te faken met php endergelijke?

Soms, als ik heel stil ben, kan ik de zon horen schijnen


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Een bestandupload functie is bijna niet 100% veilig te maken.. je geeft per slot van rekening togang tot je bestandssysteem.

Je kunt kijken naar de daadwerkelijke header van je bestand, maar das erg ingewikkeld en zelfs te faken. Je moet in ieder geval zorgen dat er geen scripts en dergelijken uitgevoerd kunnen worden in je upload directory, dan ben je redelijk safe, maar je blijft een groot gat creeren.

Een content-type zegt niets over het bestand zelf, alleen over wat het OS met het bestand zou moeten doen als het bijvoorbeeld geopend moet worden (welk programma handelt deze content-type af). Mensen dit op laten geven is dus onzin en voor de gebruikers erg lastig, vandaar gewoon een standaard content-type als application/octet-stream.

Voor de beveiliging zou ik het dus lekker laten zitten en alleen kijken naar de bestandsextensies en bestandgrootte. Kijk voor beveiliging verder naar de rest van de server en niet zozeer naar je upload functie.

update--
Wat je wel kan doen is zoiets. Je upload het plaatje en de server zet het in een voor buiten ontoegankelijke map. Om de plaatjes op te roepen in de html gebruik je ook een php script met plaatje ID ofzo. Op deze manier is het niet mogelijk voor buitenstaanders om simpel weg een script als plaatje te uploaden en deze uit te voeren...

  • DeTeraarist
  • Registratie: November 2000
  • Laatst online: 15-09 12:11

DeTeraarist

#Boots2Asses

Topicstarter
Dat laatste(via DB ID's aan de plaatjes hangen) was ook wel mijn idee om te gaan doen, ik wilde alleen ook opvangen of het wel een geldig plaatje was, maar das dan dus een beetje overdreven, omdat het toch allemaal gefaked kan worden, als ik het goed heb begrepen.

en ik maar denken dat je beter te veel als te weinig security in kon bouwen :P (neeee, niet gaan piepen dat dat wel zo is, want dat weet ik ook wel ;))

Soms, als ik heel stil ben, kan ik de zon horen schijnen

Pagina: 1