1

我正在开发一个允许用户上传图像的应用程序。该脚本会创建多种尺寸的图像并将它们存储在具有会话 ID 的文件夹中,例如 /uploads/skj28cnkjck783wo/thumbnails,然后在用户点击提交/下一步/执行后将文件夹重命名为唯一名称。

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

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

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

谢谢

4

2 回答 2

1

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

于 2013-04-23T09:44:40.197 回答
0

操作文件的是您,而不是用户本人。

用户在他的 GET 或 POST 请求中给出文件名(或者可能是一些文件 ID)。

  1. 通过拒绝所有包含斜杠的输入来禁止相对路径。如果您不允许子文件夹,这很容易。
  2. 如果您允许子文件夹,请拒绝所有具有 ../ 等的内容。
  3. 您可以通过更改文件名(如 flickr 所做的那样)来保留文件,并保留文件名的数据(以显示给用户)和所有者。如果所有者和用户不匹配,则拒绝。
于 2013-04-23T09:49:28.390 回答