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
Wie Dateityp testen?
@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.
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.
ja, das sieht interessant ausapollo13 hat geschrieben:https://pypi.python.org/pypi/python-magic/ ist ganz nett
verstehe ich nicht, was hat das mit der Domain zu tuen?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.
nochmal eine Frage zu dem Thema. also ich möchte im Prinzip zwei Dinge testen:
VG, bt
- * Dateityp (soll JPEG sein)
* Dateigrösse bzw. -auflösung (min/max width/heigth)
VG, bt
@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?
Was genau willst Du denn verhindern? Benutzerfehler oder fiese Benutzer die Deinen Server lahmlegen oder übernehmen wollen oder andere Nutzer angreifen wollen?
Andere Domains verhindern dank same origin policy, dass sich Fehler bei dir (eg beim auswerten ob es wirklich ein Bild ist) zu grob auswirken.beetronic hat geschrieben:verstehe ich nicht, was hat das mit der Domain zu tuen?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.