我有一个用户的子目录,我想限制每个子文件夹只有该用户。限制用户到子目录
例如我有/users/user1
,我想保护user1
文件夹,以便只有user1可以访问里面的文件。
我试着玩弄一个.htaccess和.htpasswd文件,但即使我已经对MySQL数据库进行了身份验证,但仍会提示第二次登录。
我不知道该怎么做基本上有第二个登录请求自动处理,因为用户以前会被认证。
我可以发布一些代码,我有我的.ht文件,但我认为这个信息可以让球滚动。
我有一个用户的子目录,我想限制每个子文件夹只有该用户。限制用户到子目录
例如我有/users/user1
,我想保护user1
文件夹,以便只有user1可以访问里面的文件。
我试着玩弄一个.htaccess和.htpasswd文件,但即使我已经对MySQL数据库进行了身份验证,但仍会提示第二次登录。
我不知道该怎么做基本上有第二个登录请求自动处理,因为用户以前会被认证。
我可以发布一些代码,我有我的.ht文件,但我认为这个信息可以让球滚动。
我觉得用一个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,它只会从当前用户的用户目录下载该文件。
您会希望确保您清理输入文件名,以便您不易受目录横向漏洞利用攻击。
认证如何?通过HTTP基本身份验证?基于表单的cookie使用登录?这些是两个不同的登录系统,通常是相互独立的。 –
我有点小知识,但我认为(apache)htpasswd与mysql身份验证不一样,你使用的是mod_auth_mysql吗? – ajreal
可能的重复:http://stackoverflow.com/questions/2328068/authentication-denying-access-to-files-in-directory-with-php – djdy