我想以安全的方式存储用户上传的图像(.jpg)。我很困惑哪种方式可以获得更好的结果和性能。我能看到的最佳选择是:
1. Store the images in database.
//problem : database size get large. lagging performance
2. Store them in a folder in encrypted manner.
//problem : Encryption and decryption on large file slows it down.
3. Place the image as it is in a folder behind 'public_html' in root directory.
//problem : I am unsure as they aren't encrypted.
哪种方式更好或是否还有其他“最佳实践”我现在还不知道?
答案 0 :(得分:2)
不要将它们存储在数据库中。将它们放在上传等网络目录中,并使用.htaccess
保护它们deny from all
这将限制对它们的访问。
您还应该注意文件名以避免文件命名冲突。
答案 1 :(得分:2)
这是你想用它做什么的问题,以及你希望如何保护它。
我没有通过图像看到任何可能的攻击媒介。所以我看到两种可能的选择,但首先是基础知识:
您可以将图像存储在文件系统中。在关系数据库中存储文件效率非常低。
现在,根据您的访问方案,您可以公开放置文件,只需链接到它们(因为文件名很复杂,猜测它很难),或者您可以将文件放在公共根目录之外,并且一个PHP文件访问它们并在验证权限后为它们提供服务。
答案 2 :(得分:1)
将您的图片存储在受保护的目录中,并拒绝.htaccess
访问
deny from all
当您的用户上传图片时,您应该在图片商店中创建唯一的文件名。然后,您可以使用特定图像ID的图像处理程序来提供图像:
<?php
header('Content-Type:image/jpeg');
if(authorized && isset($_GET['id']))
{
flush();
readfile('someimage' . $_GET['id'] . '.jpg');
}
?>
答案 3 :(得分:0)
确保该目录是一个配置选项,因为如果大小太大或者前端节点的数量增加,您可能希望将来存储在单独的计算机上。
2提示: