您的位置:首页 > 运维架构 > 网站架构

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

2017-08-08 10:28 423 查看
<?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 );

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: