琐碎的学习——又拍云存储防盗链方案

又拍云存储提供四个配置项供用户使用

 

 

域名防盗链(图片网站适用)

 

白名单域名列表

黑名单域名列表

IP黑名单

 

1,维护一个IP列表

2,IP地址支持通配符

客户端白名单

 

1,维护一个user-agent列表

2,客户端,手机APP自定义user-agent

token防盗链(下载站,mp3播放站适用)

 

所有资源均需token签名访问

参数名:_upt

签名格式:MD5(密匙&过期时间&URI){中间8位}+(过期时间)

过期时间格式: UNIX TIME,如:1352945617

URI: 请求地址(不包含?及后面的Query String),如:/pics/abc.jpg

 

例如生成一个访问 http://{空间域名}/pics/abc.jpg (15分钟有效)的图片链接,当前时间是{time},

签名数据则为: MD5(密匙&{time+900}&/pics/abc.jpg) = {token_sign},

那么签名为:取中间8位并加上过期时间 {token_sign}{time+900}

 

构造出的防盗链签名为:{token_sign}{中间8位}{time+900},如:698ec9671352946517

该签名可以包含在 URL 地址或用户 Cookie 中,均可起到防盗链作用!

URL: http://{空间域名}/pics/abc.jpg?_upt=698ec9671352946517

或 Cookie: _upt=698ec9671352946517;

 

对于使用 Cookie 类无法给每个链接进行单独签名的情况,可使用 / 作为 URI 进行统一的泛签名,

如:MD5(密匙&过期时间&/){中间8位}+(过期时间)

(注意:泛签名在过期时间内,对整个空间内的链接资源都有效)

 

<?php
$etime = time()+600; ///该访问授权十分钟后过期
$sign = substr(md5('token密匙&'.$etime.'&/pics/abc.jpg'), 12,8).$etime;
?>
 

*密钥可用户自行设置


你可能感兴趣的:(琐碎的学习)