`
sealbird
  • 浏览: 570595 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

apache防盗链(mod_perl试用二)

阅读更多
引用
(2010-05-27 00:07:01)
转载标签: 杂谈 分类: MSN搬家 
上回提到的防盗链方式是在strings上加上key和time,uri本身是不变的,这种方式其实现在不是很主流,主流的方式是将计算得出的加密串直接改在uri的路径里。比如下面将要提到的例子。要求其实和早先那个squid防盗链的一模一样,就是改成用apache来跑。
Test.pm内容如下:
package Test;
use strict;
use warnings;
use Socket qw(inet_aton);
use POSIX qw(difftime mktime);
use Digest::MD5 qw(md5_hex);
use Apache2::RequestRec ();
use Apache2::Connection ();
use Apache2::RequestUtil ();
use Apache2::ServerUtil ();
use Apache2::Log ();
use Apache2::Request ();
use Apache2::Const qw(DECLINED FORBIDDEN);
sub handler {
    my $r = shift;
    my $s = Apache2::ServerUtil->server;
    my $secret = $r->dir_config('Secret') || '';
    my $uri = $r->uri() || '';
    my $expire = 2 * 3600;
    if ($uri =~ m#^/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/(\w{32})(/\S+\.mp3)$#oi){
my ($year, $mon, $mday, $hour, $min, $md5, $path) = ($1, $2, $3, $4, $5, $6, $7);
my $str = md5_hex($secret . $year . $mon . $mday . $hour . $min . $path);
my $reqtime = mktime(00, $min, $hour, $mday, $mon - 1, $year - 1900);
my $now = time;
if ( $now - $reqtime < $expire){
  if ($str eq $md5) {
   $r->uri("$path");
   return Apache2::Const::DECLINED;
  }
}
}
}
1;
然后在httpd.conf中加上如下配置:
PerlPostConfigRequire /home/apache2/perl/start.pl
SetHandler modperl
PerlTransHandler Test
PerlSetVar Secret abcdef
这里需要注意几点,根据modperl的处理流程,修改uri的时候,handler还没有走到对文件进行寻址,所以无法区分文件路径等信息,故而PerlTransHandler配置不能在<Directory>和<Location>里面。
而在试用一里,核对strings是用的PerlAccessHandler,当时已经确认了uri的文件路径,故而可以在<Location>里。
另,上面的pm,对错误访问返回的是404,如果需要403,return FORBIDDEN就可以了。
如果想同时根据referer来防盗链,可能要在PerlHeaderParserHandler阶段在进行一次判定了,这个还在研究,不知道怎么取request-header的信息……
分享到:
评论

相关推荐

    mod_perl Perl模块

    mod_perl Apache的Perl模块

    mod_perl.so

    编译好的mod_perl.so v2.0.4 for Apache 2.2.11 and Perl 5.10.0,解决ppm安装无法得到正确mod_perl.so文件的问题。

    practical mod_perl

    practical mod_perl, 不用多说了,下就是了

    Weblogic整合Apache mod_wl_24.so

    Apache整合Weblogic,针对weblogic12.1.2,apache2.4版的mod_wl_24.so

    apache mod_log_rotate

    此apache mod_log_rotate 是win32下vc9版的apache 日志文件管理工具。 使用: 复制mod_log_rotate.so到 Apache2/modules 确保你的系统安装了 Visual C++ 2008 Redistributable (可从这里下载:) ...

    apache2.2 with mod_wsgi for amd64_X64

    注意:64位系统专用,如要32位的,请搜索我另外发布的一个资源"apache2.2 with mod_wsgi for win32_X86"。 使用Apache2.2+mod_wsgi搭建django站点,将apache和mod_wsgi打包提供下载,默认情况下,apache和站点平行...

    Practical Mod Perl

    Practical Mod Perl &lt;br&gt; Copyright Preface What You Need to Know Who This Book Is For How This Book Is Organized Reference Sections Filesystem Conventions Apache ...

    apache flv mp4伪流模块mod_flvx.so mod_h264_streaming.so(附教程)

    第一步,下载mod_flvx.so和mod_h264_streaming.so并放到apache目录下的modules文件夹下 mod_flvx.so mod_h264_streaming.so 把这两个文件放到,apache的modules目录中,然后查找httpd.conf这个文件,打开编辑,找到...

    Apache2.4的h264和flvx模块(mod_flvx.so和mod_h264_streaming.so)

    apache+Windows配置flv,mp4视频支持随意拖动 配置成功,亲测可用,注意对应版本!!! 压缩包内目录: mod_flvx-0.4-Apache-2.4.x-vc14-x64.zip mod_flvx-0.4-Apache-2.4.x-vc14-x86.zip ...第二步,重启apache服务

    mod_perl docs

    apache主页上关于mod_perl的离线文档,E文

    apache2.2+mod_jk

    本压缩包包含 httpd-2.2.25-win32-x86-openssl-0.9.8y.msi 和mod_jk-apache-2.2.2 经测试 apache+tomcat整合成功(tomcat为7.042)操作系统为Windows 2008 SP2

    apache2.2 with mod_wsgi for win32_X86

    注意:32位系统专用,如要64位的,请搜索我另外发布的一个资源"apache2.2 with mod_wsgi for amd64_X64"。 使用Apache2.2+mod_wsgi搭建django站点,将apache和mod_wsgi打包提供下载,默认情况下,apache和站点平行...

    Jboss7 +apache 2.2.25+mod_jk 配置集群

    Jboss7 +apache 2.2.25+mod_jk 的配置集群 Jboss7 在windows下还没有看到有这块的文档 所以把写好的放上去和大家一志分享

    mod_jk for apache2.4.7

    自己在APACHE2.4.7x64编译成功的mod_jk,希望大家不要再走弯路,我编译了好久,才最后得到正果。

    [其他类别]Apache 防盗连工具_apache_link.zip

    [其他类别]Apache 防盗连工具_apache_link.zip

    win版apache防ddos mod_dosevasive22

    1、下载附件中的压缩包,解压并拷贝mod_dosevasive22.dll到Apache安装目录下的modules目录(当然也可以是其他目录,需要自己修改路径)。 2、修改Apache的配置文件http.conf。 添加以下内容 LoadModule dosevasive...

    Apache2.2 with mod_jk

    Apache2.2.21,已经集成了mod_jk,与两个tomcat做成tomcat集群

    实用的mod_perlPractical mod_perl

    有关Apache和mod_perl强大组合的基本要素的详尽指南,从编写和调试脚本到保持服务器正常运行都没有问题。

    Apache安装包与mod_wsgi库

    在windows下使用apache+mod_wsgi部署django项目

    apache2 通过mod_jk与tomcat配置

    系统环境:ubuntu 10.04 apache2.2.14 tomcat 6.0.24 apache 利用mod_jk 连接tomcat

Global site tag (gtag.js) - Google Analytics