如何提供存储在云中的文件

时间:2011-12-06 20:38:43

标签: cloud rackspace-cloud

我正在管理一个使用Rackspace Cloud Hosting存储用户图像和文件的Web应用程序。目前,在提供用户页面时,使用到云中文件的真实链接。用户可以通过猜测文件名来查看其他用户的文件。文件名被混淆,包含大约30个字母数字,但这仍然感觉不错。

我的关注是否有效,如果是,我怎样才能最好地解决这个问题?

1 个答案:

答案 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年

(粗略地)

除非你的攻击者是一个真正坚定且装备精良的政府或其他什么东西,否则真的真的......幸运。我会说不要担心。


科学记数法中可能的组合数量:

  • 仅限小写的alphnum:(26 + 10)** 30 = 4.887368e + 46
  • 添加区分大小写,给出26 + 26 + 10个不同的字符:5.912221e + 53
  • 256位加密(也是您的云文件API密钥的长度):1.157921e + 77
  • 128位加密:3.402824e + 38
  • 56位(DES)加密:7.205759e + 16

我知道在你的情况下你可能会说你不想让人猜测的100,000个文件名,而加密时只有一个答案,所以即使你拿掉5个指数,你也是仍然高于128位加密。


如果你仍然担心:

  • 可能将文件放在非公共云文件容器中,并从Cloud Server提供服务并强制人们拥有&gt; 30个字符密码:)
  • 添加更多可能的字符类型(可能是大写+小写)..并增加文件名的长度

你可以在文件名中使用'/',这样当它们被下载时,它们仍然有一个好名字。例如。 /whgwg/4y345yh3hy/543hgwhb/nice_name.jpg

所以,如果你下载它,它会被保存为nice_name.jpg而不是一些乱码可怕的东西。


还要注意CDN缓存。如果您使用公共云文件,它们将被推送到CDN节点并缓存在那里。因此,假设Mary意外地上传了一些国家机密,他们被推出了CDN节点,她删除了她的上传,它仍然可以在CDN上用于该文件夹设置的任何缓存时间。您可以使用CDN api擦除它,但我不会依赖它。

最后..确保你的数字不可猜测,比如没有递增..应该是完全随机的。