1

我正在开发一个用户可以上传文件的 Web 应用程序。

假设有不同的文件类别,例如audiodocs。我想我可以将属于某个类别的所有文件放在一个唯一的文件夹中,例如:

audio_dir
  -file_from_user1.mp3
  -another_file_from_user1.mp3
  -file_from_user2.mp3
  -file_from_user4.mp3
docs_dir
  -file_from_user1.doc
  -file_from_user5.pdf

我正在评估的另一个解决方案使用第三级,其中文件按用户分组。

audio_dir
  user1_dir
    -file_from_user1.mp3
  user2_dir
    -file_from_user2.mp3
  user4_dir
    -file_from_user4.mp3
docs_dir
  user1_dir
    -file_from_user1.doc
  user5_dir
    -file_from_user5.pdf

哪种解决方案是最好的?请注意,我对服务器安全漏洞可扩展性感兴趣。

4

1 回答 1

1

就安全性而言,您应该将文件存储在 Web 根目录之外。这有效地避免了某人上传可能基于 HTTPD 的配置执行的一个*.php或一个*.pl或一个*.py或任何其他可执行脚本。.htaccess我也会basename()在写入文件之前传递文件名以防止目录遍历攻击。

然后,您可以让 PHP 脚本为该文件提供服务。您还可以通过将文件映射到存储在 SQL 数据库中的元数据来添加用户访问控制和文件所有权。

于 2012-08-30T06:49:30.537 回答