Php ZendFramework-如何保护公共/目录中上载的机密文件?

Php ZendFramework-如何保护公共/目录中上载的机密文件?,php,zend-framework,zend-route,zend-controller,Php,Zend Framework,Zend Route,Zend Controller,一些用户上传这些机密合同/协议文件,这些文件存储在目录/var/www/html/project/public/contract/中 但问题在于谷歌搜索或直接链接,任何未经授权的用户都可以打开并查看/复制它 我如何保护它,以便只有我的域或允许的对等方才能访问此私有目录 例如: class Application_Model_Uploader { public static function mvUploadContract() { /* Anyone from

一些用户上传这些机密合同/协议文件,这些文件存储在目录
/var/www/html/project/public/contract/

但问题在于谷歌搜索或直接链接,任何未经授权的用户都可以打开并查看/复制它

我如何保护它,以便只有我的域或允许的对等方才能访问此私有目录

例如:

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;
        }
  }
}

将文件移出公共目录,并在授权用户后使用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);
}