php图像存储 - 安全

Sha*_*kan 0 php security upload image

我想我有两种方法可以在php应用程序中存储图像:要么将它们存储在数据库中,要么存储到具有唯一名称的文件夹中.考虑到我想最小化数据库连接,如何保护包含用户上传图像的文件夹?

所以基本上,每个用户都会有一个个人资料,并将他们的照片上传到网站,与他们想要的任何人分享.我计划将它们存储如下:

/root/somefolder/{userid}{uniquenumber}.jpg
Run Code Online (Sandbox Code Playgroud)

如果我配置htaccess以防止访问当前文件夹,它就足够了吗?或者我应该采取其他一些安全措施吗?

干杯

Boa*_*ann 5

要么将它们存储在数据库中,要么存储到具有唯一名称的文件夹中

数据库针对存储小块数据而非大块数据进行了优化.如果让普通的操作系统和Web服务器处理文件传递,您将获得更好的性能.使用普通文件可以使您不必重新实现HTTP缓存头和范围请求的处理.

但无论哪种方式,这些资源都需要网址,因此问题的第二部分仍然具有相关性.

如果我配置htaccess以防止访问当前文件夹,它就足够了吗?

我认为这就足够了.只要唯一部分很长(例如,"somefolder/738b3093b898654bd3bbb9e3770e7fc0.jpg")并且不遵循模式就无法猜测它.

但除非你真的需要文件名中的userid,否则请避开它.Facebook包含用户个人资料ID是照片文件名的一部分,因此当人们在其他地方共享照片文件时,它允许发现他们的Facebook个人资料和真实姓名.我看到它导致多个在线社区中的跟踪和骚扰.这不是用户的错 - 他们不知道他们通过在某处张贴照片来赠送他们的真名或朋友的真实姓名.

另一个考虑因素是,随着这样一个系统的增长并且它获得了大量的文件,如果它们只在一个文件夹中,那么它对文件系统来说是一个非常大的负担.您可以通过在子文件夹中重复或拆分部分名称来轻松防止这种情况.例如,"somefolder/7e/7e8b3093b898654bd3bbb9e3770e7fc0.jpg".