php如何確保使用者上傳的檔案是安全的
阿新 • • 發佈:2018-12-17
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; //檔案型別不正確或檔案偏大 } } } } ?>