php如何确保用户上传的文件是安全的

版权声明: https://blog.csdn.net/qq_27987023/article/details/83377877

1,根据 $_FILES 的size,判断用户上传大小是否超过指定大小

2,对文件扩展进行判断,防止用户上传其他类型后缀代码

3,对文件进行重命名,防止用户上传伪装文件,如果 php命令加后缀文件

如果用源生的写法,需要自行判断和进行以上操作,但用tp5的话,很多内容都已经提前被封装好,备注一下:

<?php
public function touxiang_upload(){
    if(isset($_FILES) && !empty($_FILES)){
        // 移动到框架应用根目录/public/uploads/ 目录下
        if($_FILES["file"]["error"]){
            return ['code'=>-1,'msg'=>$_FILES["file"]["error"]];   
        }else{
            //加限制条件
            //判断上传文件类型为png或jpg且大小不超过2048000B
            if(($_FILES["file"]["type"]=="image/png"||$_FILES["file"]["type"]=="image/jpeg") && $_FILES["file"]["size"]<2048000){
                    //防止文件名重复
                    $file_name_array = explode(".",$_FILES['file']['name']);
                    $name = rand(1000,9999).time().rand(1000,9999).".".$file_name_array[1];
                    $name_file = ROOT_PATH."uploads/touxiang/".$name;
                     //检查文件或目录是否存在
                    if(file_exists($name_file)){
                        echo -2; //该文件已存在,需让用户重新上传 
                    }else{  
                        //保存文件,   move_uploaded_file 将上传的文件移动到新位置  
                        move_uploaded_file($_FILES["file"]["tmp_name"],$name_file);//将临时地址移动到指定地址

                        $image = \think\Image::open(ROOT_PATH.'/uploads/touxiang/'.$name);
                        $image->thumb(91, 91,\think\Image:: THUMB_SCALING)->save(ROOT_PATH.'/uploads/touxiang/thumb_'.($name));
                        $thumb_img = '/thumb_'.($name);
                        echo 1; //上传成功
                    }       
            }else{
                echo -3; //文件类型不正确或文件偏大 
            }
        }
    }
}

?>

猜你喜欢

转载自blog.csdn.net/qq_27987023/article/details/83377877