PHP创建文件夹,上传文件并允许删除文件最佳安全措施

时间:2013-04-23 09:27:14

标签: php

我正在开发一个允许用户上传图片的应用程序。该脚本创建多种尺寸的图像,并将它们存储在具有会话ID的文件夹中,例如/ uploads / skj28cnkjck783wo /缩略图在用户点击submit / next / go之前将文件夹重命名为唯一名称。

我需要允许用户能够删除单个文件,但想知道这样做的最佳安全方式是什么。如果我将删除基于会话ID,用户肯定能够更改它并删除不属于它们的文件。

我原以为我可以将用户信息和对象引用存储在表中并进行查找以确保用户有权删除该文件或将文件存储在具有基于数据库条目唯一的用户ID的文件夹中但想知道专家的想法。我做了一些谷歌搜索,但都有缺陷。

我正在运行IIS7作为Web服务器。

由于

2 个答案:

答案 0 :(得分:1)

尝试在单独的表中存储关系“userName(或userID)” - >“UserFile”。这是最安全的方式,因为操作系统(在您的情况下为Windows)只能检测到一个用户 - Web服务的所有者(IIS或Apache等)

答案 1 :(得分:0)

操纵文件的是你,而不是用户自己。

用户在其GET或POST请求中提供文件名(或者可能是某个文件ID)。

  1. 通过拒绝包含斜杠的所有输入来禁止相对路径。如果您不允许子文件夹,这很容易。
  2. 如果您允许子文件夹,请拒绝所有具有../ etc。
  3. 的文件夹
  4. 您可以通过更改名称(如flickr)来保留文件,并保留文件名(向用户显示)和所有者的数据。如果所有者和用户不匹配,请拒绝。