使用又拍云Token防盗链实现发布内容私有化
又拍云是一家以内容分发网络(CDN)为核心,进行网站、App 等文件内容快速分发的云服务商,推出直播、点播、电商、游戏、音频、移动 App 等多种细分场景的场景化 CDN 解决方案。用户可以使用又拍云来加速分发保存在又拍云存储空间里的文档、图片、音视频等文件。
很多用户向自己的终端用户提供内容分发时,希望能够:
只允许特定用户下载
保证传输的数据安全
杜绝额外的流量成本
随着需求的加深,用户还希望能够:
限制其终端用户执行下载操作的日期时间段
限制发起下载请求的来源IP地址范围
使用 Token 防盗链就可以帮助用户实现发布内容私有化。
什么是 Token 防盗链
Token 防盗链结合智能标记和公钥加密技术,是业界最安全的防盗链之一。用户可设置签名过期时间来控制文件的访问时限。Token 防盗链的目的是使得每个请求的 URL 都具有一定的“时效性”,因此 URL 本身需要携带过期时间相关的信息,同时确保这个过期时间不能被恶意修改。
Token 防盗链采用 md5 算法,将密文(通常是一个普通字符串)、过期时间、文件路径(过期时间和文件路径通常是有对应关系的,因此也参与 md5 的计算)等信息所计算的 md5 值也加入到 URL 中,CDN 节点在验证请求时,除了验证过期时间,同时还会验证该 md5 值是否匹配,对于不匹配的 md5,说明 URL 被篡改,即使请求未过期也需要禁止服务。
实现原理
首先,为你的URL设定加密字符串,该 Token 密钥可以在 CDN 管理控制后台进行配置;此时,客户端的访问外链将从 http://xxx.b0.upaiyun.com/path/to/a.jpg 的形式变为 http://xxx.b0.upaiyun.com/path/to/a.jpg?_upt=abcdefgh1370000600;又拍云的 CDN 节点则会根据 URL 的加密形式,取出对应的过期时间,和当前服务器时间进行比较,确认请求是否过期,过期的话,则直接拒绝;如果时间未过期,CDN 节点将根据约定的签名算法和密文,计算后的值和 URL 中的原始加密串进行比较;通过之后,请求会被认为是合法的。不合法的请求可以采取禁止访问。
如何使用Token防盗链让内容私有化前期准备
配置引导
登录 又拍云管理控制台 。
第一步,点击「服务」,选择「全网加速」,点击「配置」。
第二步,点击「防盗链」,选择最下面Token防盗链「ON/OFF」按钮即可开始配置:
第三步,在「Token防盗链管理」中根据自己的签名算法来进行密钥配置:
签名方式:
_upt = MD5(token 密钥 & etime & URI){中间 8 位} + etime
第四步,验证Token防盗链功能,根据客户端程序和服务端进行CDN层的配置校验。
示例
以图片启用Token防盗链实现私有化为例,示例如下:
设置图片链接 http://<bucket>/dir/pic.jpg 10 分钟有效
当前 Unix 时间 = 1370000000
etime = 1370000000 + 600 = 1370000600
URI = '/dir/pic.jpg'
sign = MD5(token 密钥&etime&URI) = xxxxxxxxxxxxabcdefghyyyyyyyyyyyy
_upt = MD5(token 密钥&etime&URI){中间 8 位} + etime = abcdefgh1370000600
该签名拼接在 URL 地址或用户 Cookie 中,均可起到防盗链作用:
URL: http://<bucket>/dir/pic.jpg?_upt=abcdefgh1370000600
Cookie: _upt=abcdefgh1370000600;
用上述方式即可通过又拍云平台实现内容发布私有化。
本文转载自异步社区。
原文链接:https://www.epubit.com/articleDetails?id=NC7E3EF9345800001DA8E1BB716F11A2D
- 点赞
- 收藏
- 关注作者
评论(0)