服务器上上传图像的最佳位置是什么


What is the best location on server to upload images?

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

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

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

文件: 上传/.htaccess

deny from all

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

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

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

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

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

安全定义。

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

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

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

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

这将确保在此目录中执行任何内容。