如何命名图像,以便无法轻易猜到其他图像名称?

时间:2012-06-29 15:02:31

标签: image security

用户将能够上传图像,名称将被更改,因此它与另一个文件的名称不同。使用简单的约定,如调用它们1.jpg,2.jpg,3.jpg等将意味着其他用户可以在4.jpg中简单输入并查看其他人的图像。

是否有方法或惯例命名图像不同,同时仍然确保猜测图像名称很难?

2 个答案:

答案 0 :(得分:3)

你可以写一个PHP脚本来每次生成一些伪随机图像名称,如21412adfs.jpg。

更好的是,取上传文件的名称,并在其上添加一个6位数的随机数,比如19353 - toy - car.png,你甚至可以用一个数字替换这个6位数字表示上传图像的日期。

命名约定可以是您真正想要的任何形式,无论哪种方式最适合您的设置和存档目的。在图像名称中包含日期可能很好,因为您可以根据日期等将图像轻松地分类到不同的上传文件夹中。

答案 1 :(得分:1)

最好的办法是使用散列函数生成一个可以使用的随机字符串。例如,在PHP中,您可以使用以下内容。

$filename = md5('SOME RANDOM STRING'.rand(0,200000).time());

MD5有时可以生成相同的随机字符串,这会导致文件名冲突,但这种情况发生的可能性很小,如果是这样的话......你所要做的就是再次运行名称生成 - 碰撞两次连续不太可能。

确保将“SOME RANDOM STRING”更改为只有您知道并在您的网站上使用的内容。这就是所谓的“站点盐”,这意味着外人将会更难以猜测生成的文件名的名称,因为他们无法预测和反向处理您为混合生成的所有内容它

希望有帮助吗?