1

使用 PHP 从图像中删除 EXIF 数据是否足以防止恶意代码在服务器中执行?

我想保护服务器免受此博客文章中描述的做法的影响:

<?php

$img = imagecreatefromjpeg('malicious_codes.jpg');
$w = imagesx($img);
$h = imagesy($img);

$trans = imagecolortransparent($img);
if($trans >= 0) {

$rgb = imagecolorsforindex($img, $trans);

$oldimg = $img;
$img = imagecreatetruecolor($w,$h);
$color = imagecolorallocate($img,$rgb['red'],$rgb['green'],$rgb['blue']);
imagefilledrectangle($img,0,0,$w,$h,$color);
imagecopy($img,$oldimg,0,0,0,0,$w,$h);

}

imagejpeg($img,'safe_image.jpg');

?>
4

2 回答 2

2

这将在 PHP 中显示来自 JPEG 文件的 EXIF 信息。

$uploadfile = "uploaded/pic.jpg";
$exif = exif_read_data($uploadfile, 0, true);
echo "<b>Your file</b><br />\n";
foreach ($exif as $key => $section) {
    foreach ($section as $name => $val) {
        echo "$key.$name: $val<br />\n";
    }
}

而这段代码应该会删除所有的EXIF信息

$img = new Imagick($uploadfile);
$img->stripImage();
$img->writeImage($uploadfile);

你可以在这里试试: https ://iconnaut.com/exif.php

于 2019-05-04T06:51:03.573 回答
0

我认为,如果您以任何方式操纵图像(例如调整大小),它会丢失一些 exif 数据。至少在java中的一个例子中发生了这种情况。

HERE也有一个使用 ExifTool 的示例。

编辑:

看到这篇文章:使用 PHP 从 JPG 中删除 EXIF 数据

于 2013-11-06T13:00:04.087 回答