Php 通过文件上传base64_解码图像是否安全?

Php 通过文件上传base64_解码图像是否安全?,php,image-resizing,Php,Image Resizing,我正在跟踪代码,在客户端调整大小后,它使用file\u put\u contents($file,$data)保存 if ($_POST) { define('UPLOAD_DIR', 'uploads/'); $img = $_POST['image']; $img = str_replace('data:image/jpeg;base64,', '', $img); $img = str_replace(' ', '+', $img); $data =

我正在跟踪代码,在客户端调整大小后,它使用
file\u put\u contents($file,$data)保存

if ($_POST) {
    define('UPLOAD_DIR', 'uploads/');
    $img = $_POST['image'];
    $img = str_replace('data:image/jpeg;base64,', '', $img);
    $img = str_replace(' ', '+', $img);
    $data = base64_decode($img);
    $file = UPLOAD_DIR . uniqid() . '.jpg';
    $success = file_put_contents($file, $data);
    print $success ? $file : 'Unable to save the file.';
}

然而,我不知道这个函数实际上是如何工作的,我担心的是——如果用户将隐藏的输入字段和伪造的php代码更改为图像,或者用户将隐藏的输入字段更改为另一个大小不同的图像,那么防止这种情况发生的最佳实践是什么

将数据写入文件后,使用
getimagesize()
验证它是否为正确的图像数据。如果此操作失败,请删除文件并报告上载失败。

将数据写入文件后,使用
getimagesize()
验证它是否为正确的图像数据。如果失败,请删除文件并报告上载失败。

最佳做法:不要将表单字段用于不希望用户篡改的数据。使用会话变量。这是通过客户端大小调整大小,如何使用会话数据?我假设隐藏字段是由另一个PHP脚本创建的。如果必须获取客户端创建的数据,则需要对其进行验证。将图像写入文件后使用
getimagesize
。最佳做法:不要将表单字段用于不希望用户篡改的数据。使用会话变量。这是通过客户端大小调整大小,如何使用会话数据?我假设隐藏字段是由另一个PHP脚本创建的。如果必须获取客户端创建的数据,则需要对其进行验证。将图像写入文件后,请使用
getimagesize
。图像是否安全,不会受到jpeg图像中携带的php病毒的侵害?可能不会。除非你能找到一个在PHP中使用的防病毒类。我在评论中说,如果可以避免的话,不要从用户那里获取数据。这是一个化身图像,我必须这样做。是否使用GD在服务器端复制图像,但donno在图像大小调整为base64_解码后如何编写脚本?图像是否安全,不受jpeg图像中使用php编写的病毒的影响?可能不是。除非你能找到一个在PHP中使用的防病毒类。我在评论中说,如果可以避免的话,不要从用户那里获取数据。这是一个化身图像,我必须这样做。在服务器端使用GD复制图像,但在图像大小调整为base64_解码后,不知道如何编写脚本