Nginx下载防盗链(迅雷等下载软件)
- 用户访问 down.php
- down.php 根据 secret 密钥、过期时间、文件 uri 生成加密串
- 将加密串与过期时间作为参数跟到文件下载地址的后面
- nginx 下载服务器接收到了客户端传来的加密串与过期时间,同时自己也使用配置文件里的密钥,也根据过期时间,文件uri 生成自己的加密串
- 将用户传进来的加密串与自己生成的加密串进行对比,一致允许下载,不一致 403整个过程实际上很简单,
location /s/ {
secure_link $arg_md5,$arg_expires;
secure_link_md5 "$secure_link_expires$uri$remote_addr secret";
if ($secure_link = "") {
return ;
}
if ($secure_link = "") {
return ;
}
...
}
- 实际是由客户端传来的,加密串和过期时间 的变量
- 当nginx secure_link_md5 指令做完内部检查
- 前后台的加密串不一致
- 设置 secure_link = ""
- 前后台的加密串一致
- 检查是否过期
- 过期
- 设置secure_link="0"
- 未过期
- 设置secure_link="1"
- 过期
- 检查是否过期
- 前后台的加密串不一致
- 是将所需参数传给后台处理
- 链接过期时间
- 链接URI
- 远程地址
# ./configure --with-http_secure_link_module \
--prefix=/usr/local/nginx-1.4. --with-http_stub_status_module
# make
# make install
server {
listen ;
server_name s1.down.ttlsa.com;
access_log /data/logs/nginx/s1.down.ttlsa.com.access.log main;
index index.html index.php index.html;
root /data/site/s1.down.ttlsa.com;
location / {
secure_link $arg_st,$arg_e;
secure_link_md5 ttlsa.com$uri$arg_e;
if ($secure_link = "") {
return ;
}
if ($secure_link = "") {
return ;
}
}
}
<?php
# 作用:生成 nginx secure link 链接
# 站点: www.ttlsa.com
# 作者:凉白开
# 时间: --
$secret = 'ttlsa.com'; # 密钥
$path = '/web/nginx-1.4.2.tar.gz'; # 下载文件
# 下载到期时间,time 是当前时间, 表示 秒,也就是说从现在到 秒之内文件不过期
$expire = time()+;
# 用文件路径、密钥、过期时间生成加密串
$md5 = base64_encode(md5($secret . $path . $expire, true));
$md5 = strtr($md5, '+/', '-_');
$md5 = str_replace('=', '', $md5);
# 加密后的下载地址
echo '<a href=http://s1.down.ttlsa.com/web/nginx-1.4.2.tar.gz?st='.$md5.'&e='.$expire.'>nginx-1.4.2</a>';
echo '<br>http://s1.down.ttlsa.com/web/nginx-1.4.2.tar.gz?st='.$md5.'&e='.$expire;
?>
下载地址如下:
http://s1.down.ttlsa.com/web/nginx-1.4.2.tar.gz?st=LSVzmZllg68AJaBmeK3E8Q&e=1378881984
- 密钥防止泄露、以及经常更新密钥
- 下载服务器和 php 服务器的时间不能相差太大,否则容易出现文件一直都是过期状态.
Nginx下载防盗链(迅雷等下载软件)的更多相关文章
- nginx secure_link下载防盗链
下载服务器上有众多的软件资源, 可是很多来源不是本站,是迅雷.flashget, 源源不断的带宽,防盗链绝对是当务之急. 使用来源判断根本不靠谱,只能防止一些小白站点的盗链,迅雷之类的下载工具完全无效 ...
- Nginx中防盗链(下载防盗链和图片防盗链)操作记录
日常运维工作中,设置防盗链的需求会经常碰到,这也是优化网站的一个必要措施.今天在此介绍Nginx中设置下载防盗链和图片防盗链的操作~ 一.Nginx中下载防盗链的操作记录对于一些站点上的下载操作,有很 ...
- Nginx中防盗链(下载防盗链和图片防盗链)及图片访问地址操作记录
日常运维工作中,设置防盗链的需求会经常碰到,这也是优化网站的一个必要措施.今天在此介绍Nginx中设置下载防盗链和图片防盗链的操作~ 一.Nginx中下载防盗链的操作记录对于一些站点上的下载操作,有很 ...
- Nginx图片防盗链【实战】
访问我的博客 前言 博主目前在一家原创小说网站公司工作,由于站内的作品全部是原创,于是乎不可避免地会被一些盗版网站爬取盗版,对于防盗版一直没有很好的对策,让公司很是苦恼. 最近去一些盗版网站上搜索我们 ...
- 听说你的资源被盗用了,那你知道 Nginx 怎么防盗链吗?
上一篇文章讲了 Nginx 中的变量和运行原理,下面就来说一个主要提供变量并修改变量的值的模块,也就是我们要讲的防盗链模块:referer 模块. 简单有效的防盗链手段 场景 如果做过个人站点的同学, ...
- 完美的nginx图片防盗链设置详解
一般,我们做好防盗链之后其他网站盗链的本站图片就会全部失效无法显示,但是您如果通过浏览器直接输入图片地址,仍然会显示图片,仍然可以右键图片另存为下载文件!依然可以下载?这样就不是彻底的防盗链了! [r ...
- nginx 有关防盗链的设置
http://blog.csdn.net/longjef/article/details/53284108 关于nginx防盗链的方法网上有很多教程,都可以用,但是我发现很多教程并不完整,所做的防盗链 ...
- nginx作防盗链设置
盗链是一种损害原有网站合法权益,给原网站所在服务器造成额外负担的非法行为. 盗链的实现原理: 客户端向服务器请求资源时,为了减少网络带宽,提高响应时间,服务器一般不会一次将所有资源完整地传回给客户端. ...
- NGINX 如何防盗链
一.安装Nginx: 1.解决依赖关系 # yum groupinstall "Development Tools" "Server Platform Deveopmen ...
随机推荐
- 拉格朗日乘数法 和 KTT条件
预备知识 令 \(X\) 表示一个变量组(向量) \((x_1, x_2, \cdots, x_n)\) 考虑一个处处可导的函数 \(f(X)\), 为了方便描述, 这里以二元函数为例 对于微分, 考 ...
- c语言指针学习【转】
前言 近期俄罗斯的陨石.四月的血月.五月北京的飞雪以及天朝各种血腥和混乱,给人一种不详的预感.佛祖说的末法时期,五浊恶世 ,十恶之世,人再无心法约束,道德沦丧,和现在正好吻合.尤其是在天朝,空气,水, ...
- 知问前端——日历UI(三)
datepicker日期选择选项 属性 默认值/类型 说明 minDate 无/对象.字符串或数值 日历中可以选择的最小日期 maxDate 无/对象.字符串或数值 日历中可以选择的最大日期 defa ...
- C# ICSharpCode.SharpZipLib.Zip 的使用
public static class ZipFileHelper { #region 加压解压方法 /// <summary> /// 功能:压缩文件(暂时只压缩文件夹下一级目录中的文件 ...
- python基础之函数(自定义函数)
函数: 函数的定义: 初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因变量,y是x的函数. ...
- python几个重要的函数(lambda,filter,reduce,map,zip)
一.匿名函数lambda lambda argument1,argument2,...argumentN :expression using arguments 1.lambda是一个表达式,而不是一 ...
- vCard
vCard 在翻阅dottoro的时候,在附录(appendix)的js部分,注意到一个叫vCard的部分,能单独列出来,可能是比较重要的,至少是比较独立的部分,但是以前从未听说或者了解过这一部分,如 ...
- Solidity 文档--第三章:Solidity 编程实例
Solidity 编程实例 Voting 投票 接下来的合约非常复杂,但展示了很多Solidity的特性.它实现了一个投票合约.当然,电子选举的主要问题是如何赋予投票权给准确的人,并防止操纵.我们不能 ...
- Selenium2+python自动化59-数据驱动(ddt)【转载】
前言 在设计用例的时候,有些用例只是参数数据的输入不一样,比如登录这个功能,操作过程但是一样的.如果用例重复去写操作过程会增加代码量,对应这种多组数据的测试用例,可以用数据驱动设计模式,一组数据对应一 ...
- zabbix通过snmp监控vmware vpshere5.5
https://www.iyunv.com/thread-516343-1-1.html