伪装php网站文件目录,网站目录防篡改程序,perl web目录md5文件验证

有时候站点有bug,很容易会被人修改,添加其他乱七八糟的东西,针对这类问题,常见的做法:1、修改升级程序漏洞。2、用WAF主动防御(用第三方免费cdn,也提供这类防御)。

本文我们介绍第三种方法(如果网站固定文件不变的情况下)网站部署好后,通过对站点所有文件的计算MD5值,并保存在一个文件中。然后以后可以手动或者crontab,监控程序等定期对保存文件中的文件生成md5值和已有的md5值对比,如果发现值对不上,则说明文件被篡改了。

use strict;

use warnings;

use Digest::MD5 qw(md5_hex);

my $dir=shift;

# 此处默认为检查md5值。

md5check($dir);

# 如果需要开始生成web目录的md5值,注释掉上面一句,把下面一句启用

#md5init($dir);

sub md5_sum {

my ($file_name,$mode)=@_;

my ($FD,$ctx, $md5);

open ($FD,$file_name) or die "Can't open /'$file_name/': $!";

$ctx = Digest::MD5->new;

binmode($FD) if $mode;

$ctx->addfile($FD) || die "$!\n";

$md5 = $ctx->hexdigest;

close $FD;

return $md5;

}

sub md5check {

my $file=shift;

open(my $fd, '

print $file;

while (){

my ($name, $sum) = split /\s+/;

if ($sum eq md5_sum($name,1)){

print "$name OK\n";

}

else{

print "$name FAILED\n";

}

}

close $fd;

}

# 遍历目录计算md5值

sub md5init {

my $fd=shift;

my $md5value;

if ( -f $fd ){

if ( -T $fd ) {

#print "按照文本模式进行计算MD5!\n";

$md5value =md5_sum($fd,0);

print "$fd\t$md5value\n";

}elsif( -B $fd ){

#print "二进制文件用binmod计算MD5!\n";

$md5value =md5_sum($fd,1);

print "$fd\t$md5value\n";

}else{

#print "其他文件,按照bimmod计算!\n";

$md5value = md5_sum($fd,1);

print "$fd\t$md5value\n";

}

}

elsif( -d $fd ){

my $file_md5;

# print "开始验证目录下所有文件:\n";

opendir (my $DH,$fd) or die "Can't open dir $fd: $!";

for(readdir $DH ){

my $file=$fd.'/'.$_;

# 上级目录..,本目录. 以及连接文件跳过

next if ($file =~ m{/.$} || $file =~ m{/..$} || -l $file );

md5chek($file);

}

closedir $DH;

}

}

以上程序保存成文件,比如filemd5check.pl

注意以上代码,笔者已经写成模块MD5sum,可以通过oschina的git库:

http://git.oschina.net/ijz/MD5Check

同时可以通过perl cpan库安装文件进行安装。cpanm MD5Check

一、生成web的md5验证文件:

注释掉

#md5check($dir);

md5init($dir);

然后执行  web目录  > webmd5-20160920

3bbf71ded83a3d5df97194bb558e2bdc.png

web目录换成自己实际的web目录 webmd5-20160920 为保存计算结果的文件,可以自定义

二、检查时候,用默认文件

perl filemd5check.pl  webmd5-20160920

dc8f2febbfb4fda90c79e1141fd0ec2a.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值