![](/img/trans.png)
[英]PHP output directory folders, Files and echo Permissions and if writable or unwritable
[英]php folders and files permissions
我对文件夹和文件权限的工作方式有一些疑问。 说我有'受保护'以外的用户目录,如下所示..
users
-- usera
-- docs
-- userb
-- docs
protected
我不希望没有权限的用户B访问用户A目录中的任何内容。 另外,我不希望任何人通过url链接访问目录目录。 基本上我只希望用户能够访问自己的目录,而不是其他人。 如何做呢?
谢谢!
如果没有更多信息,我的建议是确保用户目录位于Web根目录之上。 这将阻止它们被链接。 然后创建一个PHP脚本,验证用户是否是他们所说的人。 一旦知道登录用户的身份,就可以使用fpassthru()( http://php.net/fpassthru )或类似内容将文档传递给用户。
我在这里回答了一个类似的问题, 将用户限制在你应该能够根据自己的需要调整的子目录中,我也在这里复制了它。
的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目录下载该文件。
您需要确保清理输入文件名,这样您就不会受到目录横向漏洞利用的攻击。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.