2011-05-19 100 views
0

默认情况下,服务器上可用的许多文件夹,如“public_html”,“public_ftp”或简单的根,哪一个是最好的安全地上传和存储用户的图像,我也可以添加一个链接到MySQL数据库?什么是服务器上传图片的最佳位置?

+0

忘记询问存储限制。如果我有无限的空间是为所有文件夹或它只适用于FTP?谢谢 – Kourosh 2011-05-19 12:00:50

回答

1

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

0

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

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

这将确保该目录内执行任何获取的。

1

,我建议你将文件保存在某处“的public_html”,并创建以下文件,以限制公众获取:

文件:上传/的.htaccess

deny from all 

在你的PHP脚本,你可以发送这些文件仅限于有权访问的用户。

1

在我看来,将其存储在之外的的公共htdocs文件夹中。这是因为如果有人设法上载图像文件以外的任何东西(比如邪恶的PHP脚本),他们将无法调用它(并且不会运行)。

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

此外,请确保您进行验证,以便它使用允许的图片名称(比如只允许的白名单。 JPG,.gif和巴纽)

编辑: 您还需要创建打开图像文件,并通过回给用户

+0

然后,上传的图像也将不可用。 – 2011-05-19 11:57:35

+0

我忘了提及创建一个脚本来传递图片,编辑我的帖子 – fin1te 2011-05-19 11:58:53

+0

然后使用脚本显示图片。 – Prikkeldraad 2011-05-19 11:59:46

1

安全的定义是通过一个脚本。

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

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