如何在PHP中实现有限的文件访问?

时间:2011-06-29 06:53:15

标签: php file-upload lamp file-permissions

我正在开发一个应用程序(LAMP),用户可以将文件上传到服务器,但不能与其他用户共享文件。所以,我的问题是实现一种安全机制,确保用户A无法访问用户B上传的文件。

我的方法是:

  1. 每个用户都有一个文件夹(/ upload / userA)
  2. 添加.htaccess文件以将对/ upload文件夹的所有访问重定向到PHP脚本
  3. 检查用户是否有权访问子目录(/ userA)
  4. 你能看到这种方法的任何缺点吗?还有更好的选择吗?

1 个答案:

答案 0 :(得分:1)

您可以创建类似download.php?id=1234的内容,而不是对文件进行硬性引用,只需从数据库中检查1234是否具有下载文件的权限,并且不显示用户的物理路径所有

使用HTTP标头,您可以强制用户使用您所需的文件名(存储在数据库中)下载文件。允许用户从物理路径直接访问他们的文件不是一个好主意,如果你尝试在每个请求时使用.htaccess挂钩,那确实会更加昂贵。

大多数系统会考虑生成一些随机字符串或GUID,您无法通过随机更改字符来访问其他人的文件。即在Facebook图像../187170_697610597_4628627_q.jpg中,有一个复杂的URL,用户可以直接访问,但不能通过更改几个数字来猜测另一个图像URL,这太难了但不安全,不符合您的要求。