首页 文章

这个正则表达式容易受到任意文件上传的影响

提问于
浏览
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技巧,但这是安全的 . 有谁知道其他任何方法?或者上面的代码安全吗?

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 .

相关问题