我正在使用 Restlet 作为后端尝试创建一个小型 Web 应用程序。
我允许用户上传个人资料图片,但不知道将它们存储在哪里。Google 告诉我将其存储在文件系统中,这很合理。
那么我是否应该将它们存储在 Web 前端所在的公共 Web 文件夹中?但这样人们岂不是很容易就能访问所有个人资料图片?
如果我不将图像存储在公共网络目录中,那么我应该将它们存储在哪里以及如何保护它们?
我的服务器是 Ubuntu server 12.04,提前致谢
答案1
您当然可以将它们存储在公共文件夹内的子文件夹中,并禁用文件夹浏览。然后仅在您的应用程序中公开图像。
答案2
您可以将文件存储在文档根目录之外,并使用相对路径将它们包含在后端。通常,Web 服务器将拒绝访问文档根目录的父目录,但后端服务将能够访问它们。
即如果你使用:
DocRoot = /var/www
Images = /var/profile-pics
这不会起作用:
http://www.yourdomain.com/../profile-pics/David.JPG
这将起作用:
<?php include('../profile-pics/David.JPG'); ?>
注意:PHP 用作示例,当然您不能以这种方式包含 jpeg。仅用作将敏感文件置于文档根目录之外的示例。