【发布时间】:2011-08-28 19:51:35
【问题描述】:
在服务器上默认可用的许多文件夹中,例如“public_html”、“public_ftp”或只是根目录,哪一个最适合安全地上传和存储用户的图像,我还可以添加到 mysql db 的链接?
【问题讨论】:
-
忘记询问存储限制。如果我有无限空间是所有文件夹还是仅用于 ftp?谢谢
标签: php image upload directory
在服务器上默认可用的许多文件夹中,例如“public_html”、“public_ftp”或只是根目录,哪一个最适合安全地上传和存储用户的图像,我还可以添加到 mysql db 的链接?
【问题讨论】:
标签: php image upload directory
安全地定义。
如果您想在网站上显示这些图像,那将是public_html 中的一个文件夹,显然,除非您想使用向用户呈现图像的脚本,可能会即时更改图像,更改缓存头等。然后您可以将该文件夹移到 docroot 之外的任何脚本可以访问这些文件的位置。
我个人将用户图像、文件和所有内容存储在 docroot 中,受 .htaccess 保护,并在必要时通过处理用户权限的脚本进行访问。这些文件位于/uploaded 文件夹中,子文件夹的深度最多为 2 层,每个“层”最多可存储 1024 个目录/文件。文件仅由它们的 id 命名,没有任何扩展名,所有文件信息都存储在数据库中。我花了一些时间来实现,但幸运的是这是一个可重用的代码。
【讨论】:
在我看来,请将其存储在公共 htdocs 文件夹的外部。这样一来,如果有人设法上传除图像文件以外的任何内容(例如邪恶的 PHP 脚本),他们将无法调用它(并且它不会运行)。
如果你的 public_html 文件夹是 /path/to/website/public_html 我会将它们存储在 /path/to/website/uploaded_images
另外,请确保对其进行验证,以便它使用允许的图像名称的白名单(例如仅允许 .jpg、.gif 和 .png)
编辑: 您还需要创建一个脚本来打开图像文件并将其传递给用户
【讨论】:
我建议您将文件保存在“public_html”中的某个位置并创建以下文件以限制公共访问:
文件:上传/.htaccess
deny from all
在您的 php 脚本中,您只能将文件发送给有权访问的用户。
【讨论】:
文档根目录中的任何文件夹都可以。如果您希望它是安全的,请确保您的脚本只接受允许输入的文件,并作为另一种措施,将 .htaccess 文件放入该文件夹中:
<FilesMatch "*.php">
SetHandler None
</FilesMatch>
这将确保不会从该目录中执行任何操作。
【讨论】:
如果您的客户通过 http 表单上传图片,如果他们需要从网络访问,请将其存储在 public_html 中。
【讨论】: