PHP攻击网站防御代码-以及攻击代码反译


<?php
/**
 * PHP攻击网站防御代码-以及攻击代码反译
 * 这是我无意中攻击一个网站发现的一个代码PHP有效的拦截住我的DDOS
 */


// 查询禁止IP
$ip = $_SERVER ['REMOTE_ADDR'];
$fileht = ".htaccess2";
if (! file_exists ( $fileht ))
    file_put_contents ( $fileht, "" );
$filehtarr = @file ( $fileht );
if (in_array ( $ip . "\r\n", $filehtarr ))
    die ( "Warning:" . "<br>" . "Your IP address are forbided by some reason, IF you have any question Pls emill to shop@mydalle.com!" );
    
    // 加入禁止IP
$time = time ();
$fileforbid = "log/forbidchk.dat";
if (file_exists ( $fileforbid )) {
    if ($time - filemtime ( $fileforbid ) > 60)
        unlink ( $fileforbid );
    else {
        $fileforbidarr = @file ( $fileforbid );
        if ($ip == substr ( $fileforbidarr [0], 0, strlen ( $ip ) )) {
            if ($time - substr ( $fileforbidarr [1], 0, strlen ( $time ) ) > 600)
                unlink ( $fileforbid );
            elseif ($fileforbidarr [2] > 600) {
                file_put_contents ( $fileht, $ip . "\r\n", FILE_APPEND );
                unlink ( $fileforbid );
            } else {
                $fileforbidarr [2] ++;
                file_put_contents ( $fileforbid, $fileforbidarr );
            }
        }
    }
}
// 防刷新
$str = "";
$file = "log/ipdate.dat";
if (! file_exists ( "log" ) && ! is_dir ( "log" ))
    mkdir ( "log", 0777 );
if (! file_exists ( $file ))
    file_put_contents ( $file, "" );
$allowTime = 120; // 防刷新时间
$allowNum = 10; // 防刷新次数
$uri = $_SERVER ['REQUEST_URI'];
$checkip = md5 ( $ip );
$checkuri = md5 ( $uri );
$yesno = true;
$ipdate = @file ( $file );
foreach ( $ipdate as $k => $v ) {
    $iptem = substr ( $v, 0, 32 );
    $uritem = substr ( $v, 32, 32 );
    $timetem = substr ( $v, 64, 10 );
    $numtem = substr ( $v, 74 );
    if ($time - $timetem < $allowTime) {
        if ($iptem != $checkip)
            $str .= $v;
        else {
            $yesno = false;
            if ($uritem != $checkuri)
                $str .= $iptem . $checkuri . $time . "1\r\n";
            elseif ($numtem < $allowNum)
                $str .= $iptem . $uritem . $timetem . ($numtem + 1) . "\r\n";
            else {
                if (! file_exists ( $fileforbid )) {
                    $addforbidarr = array (
                            $ip . "\r\n",
                            time () . "\r\n",
                            1
                    );
                    file_put_contents ( $fileforbid, $addforbidarr );
                }
                file_put_contents ( "log/forbided_ip.log", $ip . "--" . date ( "Y-m-d H:i:s", time () ) . "--" . $uri . "\r\n", FILE_APPEND );
                $timepass = $timetem + $allowTime - $time;
                die ( "Warning:" . "<br>" . "Sorry,you are forbided by refreshing frequently too much, Pls wait for " . $timepass . " seconds to continue!" );
            }
        }
    }
}
if ($yesno)
    $str .= $checkip . $checkuri . $time . "1\r\n";
file_put_contents ( $file, $str );
?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值