2011-06-29 30 views
1

我正在处理一个应用程序(LAMP),用户可以将文件上载到服务器,但无法与其他用户共享文件。所以,我的问题是落实,确保用户A不能访问由用户B.上传文件的安全机制如何在PHP中实现有限的文件访问?

我的做法是这样的:

  1. 每个用户都有其文件的文件夹(/上传/用户A)
  2. 添加.htaccess文件的所有访问/上传文件夹重定向到一个PHP脚本
  3. 检查用户是否有权访问的子目录(/用户A)

可以看到这种方法有什么缺点?任何更好的选择?

+0

我能想到的一个缺点是'.htaccess'文件比较慢,而且对服务器征税 - 在服务器配置文件中设置会更好。 – Nightfirecat

+0

而不是强制引用文件,你可以做一些类似'download.php?id = 1234'的东西,并从数据库中检查'1234'用户是否有权限下载文件并且不显示用户的物理路径所有。 –

+0

我会第二@Ahmet,并补充说,以“安全”的方式保存文件的一个好习惯是将它们存储在您的域之外(但仍然在您的服务器上)。然后使用download.php?id-1234来调用该文件。 – GiladG

回答

1

您可以制作类似于download.php?id=1234的文件,而只需从数据库检查1234是否有权限下载文件,并且根本不会显示用户的物理路径。

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

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

相关问题