Wenn man Benutzer Profilbilder hochladen lässt, wie stellt man fest ob sie auch tatsächlich ein richtiges JPEG oder PNG Bild hochgeladen haben?

...komplette Frage anzeigen

5 Antworten

Um den exakten Datentyp zu finden musst du die ersten Header Bytes des File auslesen, daran erkennt man um welches Format es sich wirklich handelt. Eine png hat eine andere Bytesequenz am Anfang als eine jpg usw. Wie die header bytesequenz für das jeweilige Format aussehen muss kannst du in diversen Tabellen im Internet finden.  

Antwort bewerten Vielen Dank für Deine Bewertung

Das kann man alles aus den Exif Dateien herauslesen, sofern diese nicht entfernt wurden, was leider auch ungewollt passiert, wenn Bilder mit einem Bildbearbeitungsprogram bearbeitet wurden.

Trotzdem muss die Endung da sein.

Du kannst dir "Photo Gear" oder "Exif Wizard" oder "Methaphotodata" laden.

Eins von denen gibt es auch kostenlos.

Ob und wie weit man allerdings Bilder manipulieren kann, zeigen diese Programme wohl eher nicht an.

Es gibt in Windows und Mac OS X aber die Möglichkeit, in den Einstellungen

"Alle Dateiendungen anzeigen"

auszuwählen.

Da würde bei einem Bild etwa

Bild.jpg.gif

stehen.

Standardmäßig würde aber nur

Bild.jpg

angezeigt werden.

Bei Windows weiß ich es nur von XP, deshalb sollte es in neueren Versionen auch gehen, beim Mac aktivierst du das unter den Informationen zum Bild mit Rechtsklick.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von EvilMastermind
21.07.2016, 14:08

Bekannte Dateierweiterungen ausblenden ist in Windows standardmäßig aktiviert, kann man aber ausschalten. 

0

kann man manchmal sehen (beim genauer Hinschauen),

falls das Bild bisschen unscharf ist oder sogenannte "Artefakte" zeigt.

Einige soziale Netzwerke komprimieren ja bisschen mit Verlust.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von EvilMastermind
21.07.2016, 03:46

Frage falsch verstanden, bitte Tags durchlesen LG

0

Wieso gehst Du von der Annahme aus, dass ein jpg- oder png-Bild im Gegensatz zu einem gif-Bild nicht manipuliert sein könnte?

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von EvilMastermind
21.07.2016, 04:13

Ne ich meine das so: Also ich will nur Jpeg und PNG Bilder erlauben und vermeiden das jetzt jemand z.B. einfach ein Gif hochlädt und das *.jpg nennt, also testen ob es ein "echtes" Jpeg ist.

0
Kommentar von Herb3472
21.07.2016, 04:18

Ich hab's noch nie ausprobiert, ein gif in ein jpg oder png Bild umzubenennen - würde das denn korrekt ausgelesen und decodiert?

0

1. Endung prüfen, 2. Gucken, ob gültige Pixel sind, falls das Bild nicht irgendwie 8TB groß ist.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von EvilMastermind
21.07.2016, 14:26

Die Endung ist eben nicht sicher lol. Ein Gif wird im Browser als Gif abgespielt auch wenn es eine .jpg Endung hat.

0
Kommentar von TeeTier
21.07.2016, 18:26

Ich hatte vor vielen Jahren mal ein ähnliches Problem, und habe zu Testzwecken ein gültiges PNG-Bild erzeugt, welches nur ein paar KB groß war, beim Laden in den Speicher aber einige zich GB frisst.

Deshalb neben der Magic auch IMMER die Breite und Höhe auslesen, BEVOR man das Bild an eine Grafikbibliothek weiter gibt.

Aber selbst damit ist man nicht mal sicher. Einem User den Bildupload zu erlauben, und dieses Bild dann auch noch zu verarbeiten, ist eine verdammt riskante Angelegenheit. Ich würde, wenn möglich, darauf verzichten! :)

(Wenn man bei Indizierten PNGs in der Palette einen falschen Offset angibt, stürzt ImageMagick ab und reißt den Server-Thread gleich mit! Diese Bibliothek ist sowieso eine Katastrophe im Punkto Sicherheit, aber egal ...)

0

Was möchtest Du wissen?