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

举报
feichaiyu 发表于 2020/02/17 23:16:27 2020/02/17
【摘要】 又拍云是一家以内容分发网络(CDN)为核心,进行网站、App 等文件内容快速分发的云服务商,推出直播、点播、电商、游戏、音频、移动 App 等多种细分场景的场景化 CDN 解决方案。用户可以使用又拍云来加速分发保存在又拍云存储空间里的文档、图片、音视频等文件。很多用户向自己的终端用户提供内容分发时,希望能够:只允许特定用户下载保证传输的数据安全杜绝额外的流量成本随着需求的加深,用户还希望能够...

又拍云是一家以内容分发网络(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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。