Seite 1 von 1

Wie Dateityp testen?

Verfasst: Freitag 24. Januar 2014, 12:40
von beetronic
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

Re: Wie Dateityp testen?

Verfasst: Freitag 24. Januar 2014, 13:04
von 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.

Re: Wie Dateityp testen?

Verfasst: Montag 27. Januar 2014, 10:34
von apollo13
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.

Re: Wie Dateityp testen?

Verfasst: Montag 27. Januar 2014, 13:57
von beetronic
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?

Re: Wie Dateityp testen?

Verfasst: Montag 27. Januar 2014, 14:13
von beetronic
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

Re: Wie Dateityp testen?

Verfasst: Montag 27. Januar 2014, 14:36
von 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?

Re: Wie Dateityp testen?

Verfasst: Montag 27. Januar 2014, 17:47
von apollo13
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.