我有一个用户子目录,我想将每个子文件夹限制为仅限该用户。
例如,我有/users/user1
我希望保护user1
文件夹,以便只有user1才能访问其中的文件。
我尝试使用.htaccess和.htpasswd文件,但即使我已经对MySQL数据库进行了身份验证,我也会被提示再次登录。
我不知道该怎样做才能自动处理第二个登录请求,因为用户之前会进行身份验证。
我可以为我的.ht文件发布一些代码,但我认为这些信息可以让我们滚动。
答案 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>