Php 如何防止上传虚假图片?

Php 如何防止上传虚假图片?,php,Php,可能重复: 我有图像共享脚本,我做了一半。 用户可以将任何php或cgi文件重命名为.jpg并上传,然后成功上传 如何防止上传此类假图片 下面是我检查文件类型的方法 $userfile_type = $_FILES['file']['type']; $userfile\u type=$\u FILES['file']['type']; 当我将php文件重命名为php.jpg时,它可以轻松上传。使用imagemagic并检查图像信息 这是提供文件类型的服务器,而不是示例中的浏览器 使用GD,您

可能重复:

我有图像共享脚本,我做了一半。 用户可以将任何php或cgi文件重命名为.jpg并上传,然后成功上传

如何防止上传此类假图片

下面是我检查文件类型的方法

$userfile_type = $_FILES['file']['type']; $userfile\u type=$\u FILES['file']['type'];
当我将php文件重命名为php.jpg时,它可以轻松上传。

使用imagemagic并检查图像信息

这是提供文件类型的服务器,而不是示例中的浏览器

使用GD,您可以执行以下操作 getimagesize() 如果文件不是图像,则返回零


编辑:“getimagesize不是GD库函数。它是PHP的原生函数”,谢谢Vivek

快乐编码

可以使用getimagesize()检查图像大小。如果函数无法获取大小,则返回False。如果您可以使用GD库并使用imagecreatefromstring()函数来查看它是否为真实图像,则更好。

php.net的示例:

    if (exif_imagetype('image.gif') != IMAGETYPE_GIF) {
        echo 'The picture is not a gif';
    }
这也是直接从我链接的php.net页面:

*如果函数exif_imagetype()不可用; 您可以尝试以下解决方法:*

if ( ! function_exists( 'exif_imagetype' ) ) {
    function exif_imagetype ( $filename ) {
        if ( ( list($width, $height, $type, $attr) = getimagesize( $filename ) ) !== false ) 
        {
            return $type;
        }
    return false;
    }
}

我用魔法,有什么想法吗?thankstry带有“exif_imagetype()”,但有些图像没有exif数据,或者在Imagemagick中的“Identify filename.png”getimagesize不是GD库函数。这是PHP的固有特性。这是很难避免的!!!一个大的新作品,我已经被黑客,因为我使用图像魔术,如何检查图像信息类型?因为这个愚蠢的错误,我被黑客攻击了
if ( ! function_exists( 'exif_imagetype' ) ) {
    function exif_imagetype ( $filename ) {
        if ( ( list($width, $height, $type, $attr) = getimagesize( $filename ) ) !== false ) 
        {
            return $type;
        }
    return false;
    }
}