Wie Dateityp testen?

Django, Flask, Bottle, WSGI, CGI…
Antworten
beetronic
User
Beiträge: 33
Registriert: Mittwoch 2. Mai 2007, 10:23

Hallo Leute!

Ich schreibe eine WebApp mit Flask bei der Benutzer JPEG-Bilder hochladen können. Momentan benutze ich dafür die Erweiterung Flask-Uploads, diese testet aber lediglich, ob der Name der Datei die richtige Erweiterung hat. Fälsche ich diese, z.B. mache aus .png ein .jpg wird die Datei akzeptiert.

Welche Möglichkeiten habe ich so was zu erkennen und zu unterbinden? Ich könnte z.B. auf Systemebene (Linux) "file" aufrufen oder vielleicht PIL verwenden.Wie würde man das machen?

Grüsse, bt
BlackJack

@beetronic: Kommt drauf an wie sicher Du sein willst. Mehr als zu versuchen die Datei als JPEG zu dekodieren kann man fast nicht machen. Vielleicht würde aber auch schon das reichen was das ``file``-Programm macht: Am Anfang der Datei nach einem typischen Datenfragment von JPEG-Dateien schauen.
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

https://pypi.python.org/pypi/python-magic/ ist ganz nett, aber zb kann ein valides gif gleichzeitig ein valides js sein… Sprich für ordentliche Sicherheit musst du die Bilder von einer komplett eigenen Domain (keine Subdomain) hosten.
beetronic
User
Beiträge: 33
Registriert: Mittwoch 2. Mai 2007, 10:23

apollo13 hat geschrieben:https://pypi.python.org/pypi/python-magic/ ist ganz nett
ja, das sieht interessant aus
aber zb kann ein valides gif gleichzeitig ein valides js sein… Sprich für ordentliche Sicherheit musst du die Bilder von einer komplett eigenen Domain (keine Subdomain) hosten.
verstehe ich nicht, was hat das mit der Domain zu tuen?
beetronic
User
Beiträge: 33
Registriert: Mittwoch 2. Mai 2007, 10:23

nochmal eine Frage zu dem Thema. also ich möchte im Prinzip zwei Dinge testen:
  • * Dateityp (soll JPEG sein)
    * Dateigrösse bzw. -auflösung (min/max width/heigth)
Ist es ok, wenn ich dafür einfach PIL benutze, oder sollte man sowas aus Sicherheitsgründen nicht machen? Aber mit irgendwas muss man die hochgeladene Dateien ja eh anfassen. Wie macht man das bei "richtigen" Websites?

VG, bt
BlackJack

@beetronic: ”Richtige” Webseiten machen das so unterschiedlich wie die Kenntnisse der Programmierer und die Bedrohungsszenarien gegen die man sich schützen will vorgeben.

Was genau willst Du denn verhindern? Benutzerfehler oder fiese Benutzer die Deinen Server lahmlegen oder übernehmen wollen oder andere Nutzer angreifen wollen?
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

beetronic hat geschrieben:
aber zb kann ein valides gif gleichzeitig ein valides js sein… Sprich für ordentliche Sicherheit musst du die Bilder von einer komplett eigenen Domain (keine Subdomain) hosten.
verstehe ich nicht, was hat das mit der Domain zu tuen?
Andere Domains verhindern dank same origin policy, dass sich Fehler bei dir (eg beim auswerten ob es wirklich ein Bild ist) zu grob auswirken.
Antworten