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

Php 将随机字符附加到用户上传照片的结尾,php,mysql,sql,apache,postgresql,Php,Mysql,Sql,Apache,Postgresql,我见过几个网站,用户贡献的图像以一个看似随机的字符串结尾 示例 http://farm2.staticflickr.com/1116/5136519916_f9b8699cdc_o.jpg 问题:如果图像文件名以照片的唯一id开头,是否真的需要这样做。此id从与此图像对应的数据库表的行中删除。根据上面的例子,我猜测513651919916是照片的唯一id,f9b8699cdc是随机字符串,o是图像的大小。理论上,只要文件名是唯一的,就没有技术上的理由需要添加这样一个随机字符串。然而,我怀疑这些

我见过几个网站,用户贡献的图像以一个看似随机的字符串结尾

示例

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

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

理论上,只要文件名是唯一的,就没有技术上的理由需要添加这样一个随机字符串。然而,我怀疑这些条件是出于隐私考虑

想象一下,如果你的文件名只是照片的唯一ID,一个机器人可以系统地扫描你的整个网站,只需增加一个就可以得到所有照片。如果你的用户正在上传照片,但他们不希望每个人都能看到它们(比如Facebook或Flickr中的私人照片),那么这是一个非常不安全的系统。添加此随机字符串有助于隐藏用户内容,使链接更难猜测,从而防止未经授权的访问。关于“ImageShack有多安全?”的问题模糊地提到了这一点

唯一标识符+随机元素的组合
意味着可以轻松计算唯一ID(将标识符增加1)和添加随机元素(生成字符串并将其附加到ID)。比计算一个完全随机但仍然唯一的标识符要高效得多


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

有趣的是,这有点像是密码的盐渍。随机后缀是一种盐,目的是使暴力强迫更加困难。