将用户限制为子目录

时间:2011-11-23 17:28:49

标签: php .htaccess

我有一个用户子目录,我想将每个子文件夹限制为仅限该用户。

例如,我有/users/user1我希望保护user1文件夹,以便只有user1才能访问其中的文件。

我尝试使用.htaccess和.htpasswd文件,但即使我已经对MySQL数据库进行了身份验证,我也会被提示再次登录。

我不知道该怎样做才能自动处理第二个登录请求,因为用户之前会进行身份验证。

我可以为我的.ht文件发布一些代码,但我认为这些信息可以让我们滚动。

1 个答案:

答案 0 :(得分:1)

我认为在这种情况下使用php代理来访问文件就足够了,其中包括:

<强>的download.php

<?php
   /** Load your user assumed $user **/

   $file = trim($_GET['file']);

   /** Sanitize file name here **/

   if (true === file_exists('/users/user'.$user->id.'/'.$file)) {
       //from http://php.net/manual/en/function.readfile.php
       header('Content-Description: File Transfer');
       header('Content-Type: application/octet-stream');
       header('Content-Disposition: attachment; filename="'.$file.'"');
       header('Content-Transfer-Encoding: binary');
       header('Expires: 0');
       header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
       header('Pragma: public');
       header('Content-Length: ' . filesize($file));
       ob_clean();
       flush();
       readfile($file);
       exit;
   } else {
       throw new Exception('File Not Found');
   }

.htaccess 拒绝所有直接文件下载

deny from all

然后使用/download.php?file=filename.ext链接到文件夹,它只会从当前用户的users目录下载该文件。

您希望确保清理输入文件名,这样您就不会受到目录横向漏洞利用的攻击。<​​/ p>