使用imagecreatefrom * php重新创建上传/链接图像

时间:2016-03-06 18:26:29

标签: php security image-uploading php-gd

用户上传的图片占我正在处理的网站上大部分内容的帐户。为了安全起见,我尝试将它们存储在webroot之外并使用readfile()获取它们,但它太慢了所以我不得不回到旧方法。

现在我正在寻求确保所有上传都100%清理,因为它们将存储在webroot中。我的问题是,如果用户要将有害脚本重命名为.jpg,.gif,.png或.bmp并上传它,如果使用这样的函数重新创建图像,它在执行或获取时是否仍然有害:

function imageCreateFromAny($filepath) { 
    $type = exif_imagetype($filepath); // [] if you don't have exif you could use getImageSize() 
    $allowedTypes = array( 
        1,  // [] gif 
        2,  // [] jpg 
        3,  // [] png 
        6   // [] bmp 
    ); 
    if (!in_array($type, $allowedTypes)) { 
        return false; 
    } 
    switch ($type) { 
        case 1 : 
            $im = imageCreateFromGif($filepath); 
        break; 
        case 2 : 
            $im = imageCreateFromJpeg($filepath); 
        break; 
        case 3 : 
            $im = imageCreateFromPng($filepath); 
        break; 
        case 6 : 
            $im = imageCreateFromBmp($filepath); 
        break; 
    }    
    return $im;  
} 

换句话说,无论如何,是否要将imagecreatefrom*函数中的一个作为脚本而不是图像来执行内容,或者甚至将通过此函数运行的有害脚本缩减为损坏的图像?< / p>

0 个答案:

没有答案