繁体   English   中英

php文件夹和文件权限

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM