1

我有一个文件夹(/files),里面有很多用户可以下载的文件。我希望用户只能下载他们的文件,而不能看到其他人的文件。

例如:

用户 A 只能查看和下载:

- file1.doc
- file2.jpg

用户 B 只能查看和下载:

- file3.txt
- file4.jpeg

用户 C 只能查看和下载:

- file1.doc
- file2.jpg
- file3.txt

我的想法是将所有文件放在同一个文件夹中,以便所有用户都知道去哪里。我的问题是:我可以使用 .htaccess 还是应该为此构建 PHP 脚本?安全性如何(哪个更安全)?

谢谢

4

3 回答 3

4

它是一个打开的目录吗?您可以做的是为每个用户创建一个子文件夹,将他们的文件放在那里,然后在 .htaccess 中为所述文件夹分配适当的权限。但是,这将需要与您的操作系统进行一些安全集成(即,用户必须在您的机器上拥有帐户,而不仅仅是您的 Web 应用程序).​​.....一种快速而肮脏 - 且不安全 - 的替代方案是预先上传所有具有用户名的文件名(例如,由 'foobar' 上传的 'file1.jpg' 可以命名为 'foobar.file1.jpg',例如),那么这只是您的 PHP 脚本仅返回具有相应用户名的那些文件的情况,并且可能在显示时删除该部分(或者再次,您可以使用文件夹,只要您的脚本可以为每个用户创建一个新文件夹,当一个不存在时)。稍微安全一点的是在数据库中创建文件和用户名的哈希,用这个哈希重命名所有上传的文件,然后适当地查询数据库。

最好的解决方案肯定是操作系统管理的帐户,这是我第一次提到的,但它需要更多的开销。

于 2011-09-28T17:43:42.883 回答
1

构建一个 PHP 脚本,在其中使用readfile将文件发送到浏览器。通过这种方式,您可以限制对单个文件的访问,并使用您已有的身份验证系统。

于 2011-09-28T17:37:42.747 回答
0

您当然可以为此使用 htaccess 或 PHP。据我所知,两者都不是更安全的——虽然做错了,但两者都可以允许在不打算访问的地方进行访问!

PHP 可能会稍微好一些,因为您有更大的灵活性(例如,在将其与其他 PHP 身份验证集成方面),并且您可以将文件夹放在通常的 Web 根目录之外,这无论如何都是一个好习惯。

于 2011-09-28T17:44:29.347 回答