最佳实践:如何保护Web文件夹中的用户特定文件?

时间:2014-12-10 08:03:00

标签: php apache .htaccess cookies

我有一个包含不同用户组的网站。每个用户组都有不同的页面可供访问。这些页面可以包含文件的链接(文档,pdf等)。现在,每个组都应该只能访问特定于组的文件夹中的文档。

使这项工作的最佳做​​法是什么?事情出现了:

  • 生成所有上传文件的哈希值并根据哈希命名文件,以便找不到它 尝试并限制显示目录。 (问题:可以共享链接,公众可以访问文件)
  • 使用.htaccess文件限制访问(问题:用户每次都必须输入密码,cms可以链接到.htaccess文件 - 不是动态的)
  • 检查.htaccess是否存在cookie,例如http://www.willmaster.com/blog/contentprotection/htaccess-cookie.php(问题:如果我创建新用户组,则不是动态的)

这个问题的最佳解决方案是什么?这是上面提到的吗?

1 个答案:

答案 0 :(得分:1)

我所做的是将文件包装在带有访问控制的动态脚本中:

if ($userIsLoggedIn)
{
  header('Content-Type: application/pdf');
  header('Content-Transfer-Encoding: binary');
  header('Content-disposition: inline; filename="'.$filenameOfPDF.'"');
  header('Pragma: public');
  readfile($pathToPDF);
}
else echo 'You do not have access';

这是用PHP编写的。文件本身存储在无法从网上访问的目录中。

唯一的缺点是您需要为每种文件类型执行此操作。如果只有访问权限很重要,您可以概括:

if ($userIsLoggedIn)
{
  header('Content-Type: application/octet-stream');
  header('Content-Transfer-Encoding: binary');
  header('Content-disposition: inline; filename="'.$filename.'"');
  header('Pragma: public');
  readfile($path);
}
else echo 'You do not have access';

但我相信还有其他解决方案。