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.
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
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