美文网首页
token 防盗链

token 防盗链

作者: hiMark | 来源:发表于2018-12-13 09:51 被阅读0次

又拍云可以通过设置 token 密钥,配合签名过期时间来控制资源内容的访问时限。

token 防盗链的目的是使得每个请求的 URL 都具有一定的 “时效性”,因此 URL 本身需要携带过期时间相关的信息,同时还需要确保这个过期时间,不能被恶意修改,因此采用 md5 算法,将密钥(通常是一个普通字符串)、过期时间、文件路径(过期时间和文件路径通常是有对应关系的,因此也参与 md5 的计算)等信息所计算的 md5 值也加入到 URL 中,CDN 节点在验证请求时,除了验证过期时间,同时还会验证该 md5 值是否匹配,对于不匹配的 md5,说明 URL 被篡改,即使请求未过期也需要禁止服务。

操作步骤:

1)在控制台配置秘钥,其中秘钥是一个 32 位以内的数字或英文组合;

设置 token 秘钥

2)获取服务器时间 - UNIX TIME类型的 ,可通过 Linux 命令:date +%s,大陆的服务器,默认时间为北京时间

Linux 获取时间 工具网站获取

3)利用 MD5 开始加密信息,加密格式为 

      秘钥&过期时间&URI

秘钥:第一步在 CDN 控制台配置好的

过期时间:即服务器时间+资源可被访问的时间,按秒为单位

URI:即要访问的资源路径(不需要携带服务名)

例如:mark520&1545271510&/404.jpg

              秘钥

                              过期时间

                                                     资源路径

4)制作 token。

第三步结束后会得到一个 MD5 字符串,32位,取中间 8 位(13-20),加上过期时间就得到了 token。

第三步 MD5 之后的字符串:49c063b5621bbcc3b8337d9db7968709

中间八位 + 过期时间:bcc3b8331545271510

5)在URL后拼接 token,其中请求 URL 中的验证参数为 _upt

例如:http://iamge-blog.test.upcdn.net/404.jpg?_upt=bcc3b8331545271510

最终请求效果

请注意:

请求 URI 的路径部分,如果有请求参数,计算的时候不包含 ? 及后面的 Query String;

如果有携带缩略图版本,则需要一并纳入 URI 路径进行计算;

如果 URI 里有中文或者空格,制作token的时候不需要 URL 编码

一个 token 对应一个访问资源,也就是 URI 和访问资源是对应的,如果写到某个目录,例如 /b,那么生成的 token 只对 b 目录有效,但是 b 目录下的具体的文件或者子目录还是无法访问的,依旧会提示 invalid user token;

开启了 token 防盗链是全站加密的;

返回错误码及信息为:{ code: "40310013", msg: "invalid user token." }

相关文章

网友评论

      本文标题:token 防盗链

      本文链接:https://www.haomeiwen.com/subject/rbltqqtx.html