【问题标题】:How to restrict access to file so only owner can access?如何限制对文件的访问,以便只有所有者可以访问?
【发布时间】:2012-06-20 11:05:16
【问题描述】:

我正在寻找与此类似的问题的答案:protect users' file being accessed so only owner can access?

我正在用 php 编写一个 web 应用程序,用户可以在其中上传自己的文件或图像,但是我怎样才能保护这些文件不被所有者以外的其他人访问。

这个问题被接受的解决方案是好的,所以我将通过一个特殊的脚本“代理”文件请求,该脚本将检查是否允许用户使用这个文件。

但我想在不查询数据库的情况下执行此操作。所以,我想,应该可以通过文件的位置或名称来检测用户是否可以访问文件。

由于特定位置,我无法将所有用户文件放入名称中包含用户 ID 的文件夹中,所以我考虑文件名,其中部分名称将包含用户 ID。所以文件名可以是这样的:

1_pic.jpg、2_pic.png、1_pic.gif 等,其中名称开头的数字 =用户名

然后我就可以轻松解析文件名,并将其中的用户 id 与会话中的用户 id 进行比较,并通过这种方式检查用户是否是文件的所有者。

您如何看待这种方法,它有什么缺点?

提前致谢!

【问题讨论】:

  • 为什么要这样做而不查询数据库?如果您想限制对文件所有者的文件访问,那么您需要某种数据源来说明谁拥有哪些文件。
  • 同意。您几乎必须为此使用您的数据库...
  • 唯一的原因 - 减少数据库负载

标签: php security file-upload


【解决方案1】:

只要您只需要检查尝试访问该文件的用户是否是最初上传该文件的用户,您的方法就完全可以了。确保可以通过文档根目录不访问该目录,以便在您的脚本或 .htaccess 文件失败时文件仍然是安全的。还要确保不同用户的文件名不会发生冲突。

【讨论】:

    【解决方案2】:

    我无法想象这个函数会给数据库增加这么多的负载。但是,如果这是一个问题,那么创建一个可以访问数据库的安全登录系统。每个会话只需要执行一次,因此服务器负载并不大。用户登录后,在会话变量中设置一个值,从那时起可以使用该值,告诉脚本用户可以访问文件。

    【讨论】:

      猜你喜欢
      • 2015-05-07
      • 1970-01-01
      • 2018-07-08
      • 2022-06-30
      • 1970-01-01
      • 2020-09-20
      • 1970-01-01
      • 2019-01-14
      • 1970-01-01
      相关资源
      最近更新 更多