我正在管理一个使用Rackspace Cloud Hosting存储用户图像和文件的Web应用程序。目前,在提供用户页面时,使用到云中文件的真实链接。用户可以通过猜测文件名来查看其他用户的文件。文件名被混淆,包含大约30个字母数字,但这仍然感觉不错。
我的关注是否有效,如果是,我怎样才能最好地解决这个问题?
答案 0 :(得分:4)
我认为这取决于文件中信息的敏感性。
要强制使用30个字符的字母文件名,假设每个字符有36个值(只有小写字母加0-9),可能的组合为36 ** 30:
48,873,677,980,689,257,489,322,752,273,774,603,865,660,850,176
4.887368e + 46科学记数法
假设有人确实想要窃取你的文件并且他们拥有一台拥有200台计算机的僵尸网络,只需检查每个文件的http响应代码,例如每个机器人每秒发送1000个文件名......要说十分之一的文件名需要:
<(>((36 ** 30)/ 10)/(1000 * 200)/ 60/60/24/365)= 774,887,081,124,576,000,274,650,435,593,838年(粗略地)
除非你的攻击者是一个真正坚定且装备精良的政府或其他什么东西,否则真的真的......幸运。我会说不要担心。
科学记数法中可能的组合数量:
我知道在你的情况下你可能会说你不想让人猜测的100,000个文件名,而加密时只有一个答案,所以即使你拿掉5个指数,你也是仍然高于128位加密。
如果你仍然担心:
你可以在文件名中使用'/',这样当它们被下载时,它们仍然有一个好名字。例如。 /whgwg/4y345yh3hy/543hgwhb/nice_name.jpg
所以,如果你下载它,它会被保存为nice_name.jpg而不是一些乱码可怕的东西。
还要注意CDN缓存。如果您使用公共云文件,它们将被推送到CDN节点并缓存在那里。因此,假设Mary意外地上传了一些国家机密,他们被推出了CDN节点,她删除了她的上传,它仍然可以在CDN上用于该文件夹设置的任何缓存时间。您可以使用CDN api擦除它,但我不会依赖它。
最后..确保你的数字不可猜测,比如没有递增..应该是完全随机的。