0

我正忙着编写一个 PHP 文件,用于安全上传 .jpg、.jpeg、.png、.bmp 和 .gif 等图像的文件

这是代码:

$realname = $_FILES['userfile']['name'];

if(!preg_match("/(\.jpg|\.png|\.gif|\.bmp|\.jpeg)$/i",$realname)) {
          die();
}

有没有办法绕过此检查以上传 .php 文件?我听说过 file.php%00.jpg 技巧,但它是安全的。有谁知道任何其他方法?或者上面的代码安全吗?

4

1 回答 1

0

回答这个问题:是的。

但你很幸运,我刚刚写了这个:

function checkImageFileIsImage($filepath) {
    $type = exif_imagetype($filepath);
    $allowedTypes = array(
        1,  // [] gif
        2,  // [] jpg
        3   // [] png
    );

    if (!in_array($type, $allowedTypes)) {
        return false;
    }
    return true;
}

查看http://php.net/manual/en/function.exif-imagetype.php了解更多文件类型。

于 2013-08-15T20:54:03.163 回答