2011-12-27 2 views
2

일부 사용자는 기밀 계약/계약 파일을 업로드하여 /var/www/html/project/public/contract/<HERE_UNIQUE_FILES.pdf> 디렉토리에 저장합니다.ZendFramework - 공개/디렉토리에 업로드 된 기밀 파일을 보호하는 방법?

하지만 문제는 Google 검색 또는 직접 링크를 통해 권한이없는 사용자가 열어보고 복사 할 수 있다는 것입니다.

내 도메인이나 허용 된 동료 만이 개인 디렉토리에 액세스 할 수 있도록 보호하려면 어떻게해야합니까?

예 :

class Application_Model_Uploader 
{ 

    public static function mvUploadContract() 
    {  
     /* Anyone from outside can access this path, but how to protect it? */ 
     $target_path = APPLICATION_PATH . "/../public/contract/";   
     $target_path = $target_path . basename($_FILES['contractfile']['name']); 
     if(move_uploaded_file($_FILES['contractfile']['tmp_name'], $target_path)) 
     { 
      $result = true; 
     }else{ 
      $result = false; 
     } 
    } 
} 

답변

6

이동합니다 public 디렉토리 밖으로 파일 및 사용자 권한을 부여 후에를 스트리밍 PHP를 사용합니다.

if (is_authorized($user)) { 
    header('Content-Description: File Transfer'); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename='.basename($path_to_file_outside_public)); 
    header('Content-Transfer-Encoding: binary'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($path_to_file_outside_public)); 

    readfile($path_to_file_outside_public); 
} 
관련 문제