使用又拍云Token防盗链实现发布内容私有化

动态 作者:又拍云 2017-03-13 12:09:42
又拍云是一家以内容分发网络(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; 用上述方式即可通过又拍云平台实现内容发布私有化。 原文访问: 使用又拍云Token防盗链实现发布内容私有化

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接