首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >云存储/CDN为什么要随机化文件名?

云存储/CDN为什么要随机化文件名?
EN

Stack Overflow用户
提问于 2011-10-09 16:43:17
回答 3查看 1.7K关注 0票数 6

当你在Twitter等社交网站上查看个人资料图片时,它们存储的图像文件如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://a1.twimg.com/profile_images/1082228637/a-smile_twitter_100.jpg

或者甚至是路径中的某个日期,比如20110912。我能想到的唯一直接的好处是防止机器人以线性的方式浏览和下载你存储中的所有文件。我还错过了什么其他好处吗?对它进行随机化的最佳方法是什么?

我使用亚马逊S3,所以我将有一个子域提供我所有的静态内容。我的计划是在我的数据库中存储一个整数ID,然后将URL与id连接起来形成位置。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-09 17:36:31

我对公共URL中的标识符进行加密置乱的一个原因是,业务的增长速度并不总是公开的。

如果可以简单地通过创建新的用户帐户或上传图像来推断当前If,那么外部人员可以通过定期计算增长率(或上限),并查看在过去的时间内使用了多少If。

无论它是停滞不前还是呈指数级增长,我希望能够控制这些信息的发布,而不是让竞争对手或业务分析师能够自己推断。

离线的例子有发票和支票号码。如果你定期收到公司的账单或付款,那么你可以看到他们在这段时间内开了多少发票或支票。

下面是我维护的一个CPAN (Perl)模块,它使用基于SkipJack的双向加密对32位ids进行加扰:

http://metacpan.org/pod/Crypt::Skip32

这是Greg Rose用C语言编写的Skip32算法的直接翻译:

http://www.qualcomm.com.au/PublicationsDocs/skip32.c

此方法的使用将每个32位id映射为(有效随机的)对应的32位数字,该数字可以反转为原始id。您不必在数据库中保存任何额外内容。

我将打乱的id转换为8位十六进制数字,以便在URL中显示。

一旦您的ids接近42.9亿(32位),您将需要计划扩展URL结构以支持更多,但我喜欢尽可能短的URL。

票数 10
EN

Stack Overflow用户

发布于 2011-10-10 21:19:34

更改URL是使过期资产失效的安全方法。

如果您想要允许用户存储私有镜像,它也是必需的。一旦您将资产存储在CDN上,使用可从用户帐户名/id/路径推导出的路径将使隐私设置变得无用。

票数 4
EN

Stack Overflow用户

发布于 2011-10-09 16:50:00

主要是防止名称冲突。例如,可能会有多个人上传"IMG_0001.JPG“。你还避免了一个目录中文件数量的限制,你可以在多个服务器上共享图像-像Twitter或Facebook这样的大型网站不可能将所有照片存储在一台服务器上,无论有多大。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7704946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文