zoukankan      html  css  js  c++  java
  • Nginx使用http_accesskey_module防盗链,告别referer,告别伪装

    Nginx使用http_accesskey_module防盗链,告别referer,告别伪装

    传统的防盗链很多是依赖referer,比如apache的rewrite模块,根据规则判断referer,这个方法是可以伪装的,对现在的下载工具没有丝毫效果了。

    我们就来说说http_accesskey_module模块的原理,他通过接受到的参数值判断访问是否合法。这里有一套MD5加密算法。前台的网页根据用户的IP产生一个MD5值,后端的WEB SERVER就来判断这个MD5,对的就放行。不对就拒绝。浏览器上直接访问物理文件,是不能打开的。

    现在就开始操作:

    下载nginx

    http://sysoev.ru/nginx/nginx-0.6.35.tar.gz
    补丁文件:http://www.ieesee.net:8080/~uingei/nginx-accesskey-2.0.3.diff.bz2
    tar -xzvf nginx-0.6.35.tar.gz
    cd nginx-0.6.35
    bzcat ../nginx-accesskey-2.0.3.diff.bz2 | patch -p1
    ./configure –with-http_accesskey_module ……
    make
    make install

    如果中途出现:

    unused variable `clcf'

    报错信息,我是这么解决的,将src/http/modules/ngx_http_accesskey_module.c 的ngx_http_core_loc_conf_t 删除,重新编译。

    编译成功后,在主配置文件加入类似下面的代码:

    server{ 
    .....
    location /download {
    accesskey on;
    accesskey_hashmethod md5;
    accesskey_arg "key";
    accesskey_signature "mypass$remote_addr";
    }
    }

    /download 为你下载的目录。

    前台php产生的下载路径格式是:

    http://*****.com/download/1.zip?key=<?php echo md5('mypass'.$_SERVER["REMOTE_ADDR"]);?>

    这样,当访问没有跟参数时,其他用户打开时,就出现:

    nginx,http_accesskey_module

    基于客户端IP产生的MD5值,换了IP后就打不开了。这样的方法在nginx只做均衡调度工作时,不起作用的。会提示404错误。

    转:http://xok.la/2009/03/nginx_http_accesskey_module_referer.html

  • 相关阅读:
    jquery新知识
    jquery回顾
    Filter和Listener
    jsp,jstl,el
    cookie和session
    servlet和HTTP原理
    xml基本知识
    linux 相关操作
    linux mysql 相关操作、问题
    linux 文件结构
  • 原文地址:https://www.cnblogs.com/shuaixf/p/2249061.html
Copyright © 2011-2022 走看看