【问题标题】:How to prevent uploading fake images? [duplicate]如何防止上传假图片? [复制]
【发布时间】:2012-12-09 02:43:06
【问题描述】:

可能重复:
How to check if an uploaded file is an image without mime type?
uploading, processing, storing and delivering user-provided files and images

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

如何防止上传此类假图片?

这是我检查文件类型的方法

 $userfile_type = $_FILES['file']['type']; 

当我将 php 文件重命名为 php.jpg 时,它可以轻松上传。

【问题讨论】:

    标签: php


    【解决方案1】:
    // return mime type ala mimetype extension
    $finfo = finfo_open(FILEINFO_MIME_TYPE);
        $type = finfo_file($finfo, $tmp_name);
    finfo_close($finfo);
    

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

    使用 GD,您可以执行类似的操作 获取图像大小() 如果文件不是图像,则返回零

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

    编码愉快!!

    【讨论】:

    • 我使用 Imagemagic,有什么想法吗?谢谢
    • 尝试使用“exif_imagetype()”,但有些图像没有 exif 数据或 Imagemagick 中的“Identify filename.png”
    • getimagesize 不是 GD 库函数。它是 PHP 原生的。
    • 这真的很难避免!!!一个很大的新网络,我被黑了,因为这个
    【解决方案2】:

    使用 imagemagic 并检查图像信息

    【讨论】:

    【解决方案3】:

    最好的方法之一是使用http://php.net/manual/en/ref.fileinfo.php

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        exif_imagetype()

        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;
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-24
          • 2016-12-20
          • 2014-03-26
          • 2023-03-05
          • 1970-01-01
          • 2016-12-03
          相关资源
          最近更新 更多