将随机字符附加到用户上传的照片的末尾

时间:2012-09-16 01:07:43

标签: php mysql sql apache postgresql

我见过几个网站,其中用户提供的图片以一串看似随机的字符结尾。

示例

http://farm2.staticflickr.com/1116/5136519916_f9b8699cdc_o.jpg

问题:如果图像文件名以照片的唯一ID开头,是否真的需要这样做。此id从与此映像对应的数据库表中的行中取出。按照上面的示例,我的猜测是5136519916是照片的唯一ID,f9b8699cdc是随机字符串,o是图片的大小。

1 个答案:

答案 0 :(得分:5)

理论上,只要文件名是唯一的,就没有技术原因,你需要添加这样一个随机字符串。但是,我怀疑这些字符串存在隐私问题。

想象一下,如果您的文件名只是照片的唯一ID。机器人可以系统地扫描整个网站,只需递增1即可获得所有照片。如果您的用户正在上传照片,但他们不希望所有人能够看到它们(例如使用Facebook或Flickr中的私人照片),那么这是一个非常不安全的系统。添加此随机字符串有助于通过使链接更难猜测来隐藏用户的内容以防止未经授权的访问。 “ImageShack的安全性如何?”模糊地解决了这个问题。关于ImageShack's FAQ的问题。

unique identifier + randomized element的组合意味着可以轻松计算唯一ID(将标识符增加1)并轻松添加随机元素(生成字符串并将其附加到ID)。比计算完全随机但仍然唯一的标识符更有效。

从技术上讲,完全随机的文件名会更安全,但即使只添加三个字母数字字符(a-zA-Z0-9),也就是一个la ImageShack,意味着对于每个唯一的照片ID,文件名可以是任意一个{{ 1}}可能是文件名。突然之间,任何扫描您网站以查找用户照片的人都没有太多运气。