【问题标题】:What is the best location on server to upload images?服务器上上传图片的最佳位置是什么?
【发布时间】:2011-08-28 19:51:35
【问题描述】:

在服务器上默认可用的许多文件夹中,例如“public_html”、“public_ftp”或只是根目录,哪一个最适合安全地上传和存储用户的图像,我还可以添加到 mysql db 的链接?

【问题讨论】:

  • 忘记询问存储限制。如果我有无限空间是所有文件夹还是仅用于 ftp?谢谢

标签: php image upload directory


【解决方案1】:

安全地定义。

如果您想在网站上显示这些图像,那将是public_html 中的一个文件夹,显然,除非您想使用向用户呈现图像的脚本,可能会即时更改图像,更改缓存头等。然后您可以将该文件夹移到 docroot 之外的任何脚本可以访问这些文件的位置。

我个人将用户图像、文件和所有内容存储在 docroot 中,受 .htaccess 保护,并在必要时通过处理用户权限的脚本进行访问。这些文件位于/uploaded 文件夹中,子文件夹的深度最多为 2 层,每个“层”最多可存储 1024 个目录/文件。文件仅由它们的 id 命名,没有任何扩展名,所有文件信息都存储在数据库中。我花了一些时间来实现,但幸运的是这是一个可重用的代码。

【讨论】:

    【解决方案2】:

    在我看来,请将其存储在公共 htdocs 文件夹的外部。这样一来,如果有人设法上传除图像文件以外的任何内容(例如邪恶的 PHP 脚本),他们将无法调用它(并且它不会运行)。

    如果你的 public_html 文件夹是 /path/to/website/public_html 我会将它们存储在 /path/to/website/uploaded_images

    另外,请确保对其进行验证,以便它使用允许的图像名称的白名单(例如仅允许 .jpg、.gif 和 .png)

    编辑: 您还需要创建一个脚本来打开图像文件并将其传递给用户

    【讨论】:

    • 上传的图片也将不可用。
    • 我忘了创建一个脚本来传递图像,编辑了我的帖子
    • 然后使用脚本显示图像。
    • @Prikkeldraad 为什么? Apache 在提供图像方面要好得多,然后是 PHP。
    【解决方案3】:

    我建议您将文件保存在“public_html”中的某个位置并创建以下文件以限制公共访问:

    文件:上传/.htaccess

    deny from all
    

    在您的 php 脚本中,您只能将文件发送给有权访问的用户。

    【讨论】:

      【解决方案4】:

      文档根目录中的任何文件夹都可以。如果您希望它是安全的,请确保您的脚本只接受允许输入的文件,并作为另一种措施,将 .htaccess 文件放入该文件夹中:

      <FilesMatch "*.php">
          SetHandler None
      </FilesMatch>
      

      这将确保不会从该目录中执行任何操作。

      【讨论】:

        【解决方案5】:

        如果您的客户通过 http 表单上传图片,如果他们需要从网络访问,请将其存储在 public_html 中。

        【讨论】:

          猜你喜欢
          • 2014-03-19
          • 2010-10-04
          • 1970-01-01
          • 1970-01-01
          • 2022-06-23
          • 2012-02-13
          • 1970-01-01
          • 2011-10-03
          • 2010-09-09
          相关资源
          最近更新 更多