1
lsylsy2 2014-08-27 12:00:11 +08:00 3
可以给文件指定accesskey和过期时间,我记得七牛又拍两家都支持;
原理是将http://a.com/b.jpg变成 http://a.com/b.jpg?token=xxx&expire=yyy yyy是时间戳,xxx是(时间戳、URL、一个秘密字符串)编码后做md5 “秘密字符串”在服务器之间共享 |
2
lsylsy2 2014-08-27 12:00:50 +08:00 1
然后服务器校验token合法并且当前时间没有超过expire就允许访问,否则返回403
|
3
lsylsy2 2014-08-27 12:02:37 +08:00 1
|
4
akfish 2014-08-27 12:06:05 +08:00
其实各种网盘神马的都是存着,MD5或者SHA1撸一遍存个hash,如果遇到别的用户传相同文件,直接拿来用了,自己省了存储空间和带宽,不明真相的用户还觉得速度飞快用户体验好。
|
5
akfish 2014-08-27 12:09:29 +08:00 1
好吧,好像理解错了。权限什么的就和那个hash值挂钩,文件本身不能直接暴露给用户,不然就露陷了,加个带expire的access key给用户访问。
|
6
gamexg 2014-08-27 13:02:52 +08:00
一直很好奇,利用网盘急速上传功能,上传时伪造文件的hash值,是不是能遍历网盘的所有文件?
|
10
akfish 2014-08-27 13:54:57 +08:00 2
@gamexg 以Git用40位SHA1 Hash表示文件为例,不考虑碰撞的话,能编码16^40=1.46*10^48个文件,目前全球人口70亿,假如每个人都能上网,都用同一个网盘,都上传不同的文件,也才7*10^9。
所以hash空间的使用率是相当低的,遍历成本级高,检索到有效文件的概率极低。 |
11
node OP |
12
lsylsy2 2014-08-27 15:37:37 +08:00 1
@node 一般还是要五分钟左右,因为你的服务器和CDN的服务器可能时间不准,而且移动用户的话信号不好完全有可能卡上那么几十秒。这是个坑……
|
13
lygmqkl 2014-08-27 16:30:55 +08:00
貌似用OAuth 2.0的model就可以解决。
|