2016-06-04 5 views
2

Ich kann den Link nicht finden, den ich früher gelesen habe, über Leute, die Code in einem Bild verstecken, aber die Voraussetzung war, dass ausführbarer Code in einem Bild gespeichert werden kann, und dann wird der Code ausgeführt, wenn das Bild auf einer Website angezeigt wird . DiesePHP - Ist die Größe eines Bildes mit GD-Bibliothek ausreichend, um den im Bild eingebetteten Code zu blockieren/zu zerstören?

ist nicht das gleiche wie:

<img src="www.somelink.com/image.php?q=12345" /> 

wo es offensichtlich ist, dass das Bild von einer PHP Datei kommt, sondern die (potentiell) ruchlosen Code wird innerhalb der Bilddaten selbst verborgen.

Wie auch immer!

Der Artikel, den ich las, erwähnte das Hinzufügen des geringsten Filters zu dem Bild (d. H. Eine nicht wahrnehmbare Unschärfe), um den Code im Wesentlichen zu zerstören und dessen Ausführung zu verhindern.

Würde dieser gleiche Effekt durch einfaches Ändern der Größe des Bildes mit der GD-Bibliothek von PHP erreicht werden? Etwas wie:

$src = imagecreatefromgif($fileTempLoc); 

$resized_file1 = 'new_image_name.png'; 
$tmp1 = imagecreatetruecolor(a, b); 
imagecopyresampled($tmp1, $src, 0, 0, e, f, a, b, c, d); 
imagesavealpha($tmp1, true); 
imagepng($tmp1, $resized_file1); 

unlink($tmp1); 
unlink($fileTempLoc); 

Oder gibt es vielleicht eine andere Methode, die in der Industrie häufiger verwendet und akzeptiert wird?

Worauf wird diese "eingebettete Code" -Attacke normalerweise als? Damit ich mich näher mit dem Blockieren/Verhindern ähnlicher Angriffe befassen kann.

Vielen Dank.

Antwort

-1

ich die Kommentare so, anstatt einen Haufen Kommentare zu schreiben ich sie in dieser Antwort gesammelt haben:

Wie Skripte und ruchlosen Code stoppen in Ihre hochgeladenen Bilder gespeichert werden (extrem kurze Zusammenfassung)

Was Sie tun müssen, ist in der PHP-Code speichern [das hochgeladen] Bild als mehrere verschiedene Arten, wie Speichern Sie das Bild als JPEG, laden Sie dann, dass JPEG-Bild-Ressource und erneut speichern es als PNG Ressource zu Datei und dann laden und speichern Sie das PNG als a (f inal) JPEG.

Wiederholen Sie diesen Zyklus (obwohl nur JPEG -> PNG -> JPEG ist wahrscheinlich genug) mein Schaden nicht tun, aber wird die Auslastung der Verarbeitungsserver erhöhen.

Hinzufügen eines anderen zuverlässigen Bildformats wird auch die Sicherheit verbessern (obwohl ein gut unterstützt dritten True-Color-Format, das ich noch nicht gefunden habe) sowie doig Aktionen wie nur das Bild Ausgang als eine neue Datei speichern, anstelle des Bildes Quelle.

Welche schlechten Dinge genannt werden und was können sie

Der Referenzcode für Sie tun suchen, sind in den Metadaten am typischsten versteckt Skript Angriffe in JPEG-Dateien aber es gibt auch andere Arten von Angriffen in anderen Dateitypen wie PNG.

Einige Referenzmesswerte:

+0

Formate zwischen Bild Konvertieren ist ein unglaublich dumm und verschwenderisch Ansatz. Es ist auch wahrscheinlich, die Qualität der Bilder aufgrund von Rekompression zu reduzieren und Transparenzeffekte in hochgeladenen PNGs zu zerstören. – duskwuff

+0

Ich stimme nicht zu, und habe Themen auf SO (oder Sicherheit Stackexchange) gelesen, die als solche, dass die PHP lädt ein JPEG-Bild, und speichert es dann als PNG-Bild, daher Ausschneiden der JPEG-Metadaten, die ruchlose Codeblocks, enthalten können Das Bild wird nicht in seiner Qualität reduziert, da die Qualität des erneut gespeicherten Bildes im Code eingestellt werden kann. (Transparenzeinsparung kann vielleicht ein Problem sein) – Martin

Verwandte Themen