注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

php开发lamp

《西安--木木》-经历丰富了生活。 架构师QQ群: 246695517

 
 
 

日志

 
 

【引用优化】nginx的防盗链  

2013-06-02 18:03:52|  分类: Nginx |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在上一篇文章中提到了利用两种方法进行防盗链:1.reffer 限制用户来源(可很容易制造一个reffer)2.使用密钥通信(使用ip为每个用户进行加密)
设想就把这两种方法结合使用,但合并使用时很快遇到问题;
例如:
用户上网使用ADSL或其他方式,ip是动态,当用户这时间下载了 重启电脑或停止一段时间后再下载,用户的IP已经改变,不能继续下载。
     
   这时候想到一个方法,猜想下载工具或使用浏览器进行第一次到达的时候是使用HTTP/1.0,后面下载是使用HTTP/1.1协议(攻击者或非法下载都是使用HTTP/1.0)下载,所以使用条件$server_protocol ~ HTTP/1.1就不再进行验证。呵呵  这种想法一开log检验就行不通了,因为每次浏览器或下载工具到了服务器端都是使用HTTP/1.1(连第一次也是),所以,使用协议形式还是行不通。
既然ip不行,想其他策略进行对付,对HTTP/1.0和HTTP/1.1进行分而治之,1.0继续使用ip,1.1使用useragent进行对应加密。
为啥1.0能继续使用ip??  因为http1.0没有续传功能,正常用户不太可能使用该进行下载(前面已提到浏览器和下载工具是使用1.1)
所以使用ip进行加密是最有效。
例子:
valid_referers none blocked server_names xx.com;
…………
        if ( $server_protocol ~ "HTTP/1.0" ) {
             rewrite  /(.*) /http1.0/$1 ;        
        }
        location  / {
            root   html;
            index  index.html index.htm;
            accesskey             on;
            accesskey_hashmethod  md5;
            accesskey_arg         "p";
            accesskey_signature   "sky$http_user_agent";
        }
        location  /http1.0 {
            access_log  logs/access_1.0.log  main;
            rewrite /http1.0/(.*) /$1 break;
            root   html;
            index  index.html index.htm;
            accesskey             on;
            accesskey_hashmethod  md5;
            accesskey_arg         "p";
            accesskey_signature   "sky$remote_addr";
        }
展望:
如果1.0出现的情况还频繁,可以加上时间限制例如在nginx配置文件里面加上:
http{
……………
    perl_set $mytime '
        sub {
                my($sec,$min,$hour,$mday,$mon,$totalTime);
                  ($sec,$min,$hour,$mday,$mon) = localtime(time);
              ####继续做时间段的加长
                return $hour;
        }
    ';
}
把$mytime与时间结合使用,这样就可以为密钥加上过期的时间范围。(需要nginx perl模块支持)


  评论这张
 
阅读(110)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017