Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP从图像中删除exif数据_Php_Exif_Virus - Fatal编程技术网

PHP从图像中删除exif数据

PHP从图像中删除exif数据,php,exif,virus,Php,Exif,Virus,使用PHP从图像中删除EXIF数据是否足以防止在服务器中执行恶意代码 我想保护服务器,使其不受以下所述做法的影响: 我认为,如果您以任何方式操纵图像(例如调整大小),它会丢失一些exif数据。 至少在java的一个例子中发生了这种情况 还有一个使用ExifTool的示例 编辑: 请参阅本文:这将显示PHP中JPEG文件的EXIF信息 $uploadfile = "uploaded/pic.jpg"; $exif = exif_read_data($uploadfile, 0, true); ec

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

我想保护服务器,使其不受以下所述做法的影响:


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

还有一个使用ExifTool的示例

编辑:


请参阅本文:

这将显示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数据,我需要知道的是,这是否是防止jpg、gif或png中的恶意代码的好方法,就像我在问题中提供的链接中的恶意代码一样,我理解错了,对不起。所以,为了安全起见,如果我不需要exif数据,我会删除所有。但我真的不知道这是否是防止这种情况发生的更好的方法。我问这个问题的原因是因为基本上所有常用的措施都是防止用户在服务器中找到他的文件,并对其进行更改,或者做他想做的任何事情来执行其中的代码……我认为这只有在使用include或require打开这样的jpeg(如示例中)时才是有害的。readfile/file\u get\u contents/…的主要区别在于。。。就是这些语句在阅读后对内容进行评估。至少在输出exif数据之前,您应该确保使用htmlspecialchars屏蔽exif数据。因此,我不需要执行所有操作。内容类型验证-验证图像文件内容-验证文件扩展名-验证会话-随机文件名…等等取决于您要对上载的文件执行的操作。图像仅从作为html的服务器
$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";
    }
}
$img = new Imagick($uploadfile);
$img->stripImage();
$img->writeImage($uploadfile);