允许用户上传任何文件。我的方法不安全吗?

时间:2011-10-06 09:02:17

标签: php

我正在创建一个文件共享网站,类似于Megaupload或Rapidshare。就像提到的那些网站一样,我需要允许任何文件类型。

我正在考虑一个解决方案,并且需要知道它是否存在任何安全风险,或者是否有更好的解决方案来解决我的问题?

  1. 用户上传文件
  2. 检查文件大小,如果低于100mb开始上传
  3. 使用IP,时间戳和盐
  4. 加密文件名
  5. 存储在无法从网络访问的目录中
  6. 在数据库中存储文件名,描述和散列文件名
  7. 上传完成。现在下载:

    1. 用户请求下载
    2. 连接数据库,找到文件ID
    3. 如果找到文件ID,请从文件服务器位置复制文件并准备文件传输
    4. 重要的是要注意无法在服务器上运行。因此用户无法上传恶意文件并在服务器上发起攻击。在请求文件时,它将立即启动下载,并且永远不会运行。

      现在,考虑到上述情况,上述模型中是否存在任何可能允许恶意用户攻击服务器的缺陷?

      为了回答问题,假设网站的其余部分是安全的。

1 个答案:

答案 0 :(得分:0)

这听起来不错,只要它当然正确实施;唯一缺少IMO的步骤是检查3.和4之间可能的文件名冲突,和/或使用完全随机的文件名。毕竟,IP地址和时间戳在此上下文中并不是真正相关的信息。

在下载方面,不需要在服务器上复制文件。从秘密位置流式传输应该足够了,因为它永远不会被最终用户看到或访问。