为emlog博客加一段代码就可以防住cc攻击
in 建站教程 with 2 comments

为emlog博客加一段代码就可以防住cc攻击

in 建站教程 with 2 comments

7月份的时候我一朋友(小温)请我帮忙改改网站,刚开始我是拒绝的(那天实在是太忙了),后来听说是为emlog博客加一段代码即可防住cc攻击,嗯哼? 然后好奇之下就试了试,没想到效果确实很好。

废话不多说,直接上代码

方式一

<?php
function sheli_cc(){
       session_start();
$timestampcc = time();
$cc_nowtime = $timestampcc;
if(isset($_SESSION['cc_lasttime'])){$cc_lasttime = $_SESSION['cc_lasttime'];$cc_times = $_SESSION['cc_times']+1;$_SESSION['cc_times'] = $cc_times;
}else{$cc_lasttime = $cc_nowtime;$cc_times = 1;$_SESSION['cc_times'] = $cc_times;$_SESSION['cc_lasttime'] = $cc_lasttime;} 
if(($cc_nowtime-$cc_lasttime)<200){if($cc_times>=60){header(sprintf('Location:%s', 'http://127.0.0.1'));exit;}//200秒内刷新60次以上视为cc攻击
}else{$cc_times = 0;$_SESSION['cc_lasttime'] = $cc_nowtime;$_SESSION['cc_times'] = $cc_times;}
}
?>

方式二

<?php
function sheli_cc(){
        //代理IP直接退出
        empty($_SERVER['HTTP_VIA']) or exit('Access Denied');
        //防止快速刷新
        session_start();
        $seconds = '200'; //时间段[秒]
        $refresh = '60'; //刷新次数
        //设置监控变量
        $cur_time = time();
        if(isset($_SESSION['last_time'])){
                $_SESSION['refresh_times'] += 1;
        }else{
                $_SESSION['refresh_times'] = 1;
                $_SESSION['last_time'] = $cur_time;
        }
        //处理监控结果
        if($cur_time - $_SESSION['last_time'] < $seconds){
                if($_SESSION['refresh_times'] >= $refresh){
                        //跳转至攻击者服务器地址
                        header(sprintf('Location:%s', 'http://127.0.0.1'));
                        exit('Access Denied');
                }
        }else{
                $_SESSION['refresh_times'] = 0;
                $_SESSION['last_time'] = $cur_time;
        }
}
?>



测试效果的话你可以把时间段和刷新次数改小

使用方法

先备份你的网站文件,然后任意选择一种方式

第一步

把代码粘贴到 /content/templates/当前模板/module.php 里(先备份文件)

QQ截图20170821215922.jpg

第二步

打开 /content/templates/当前模板/header.php (先备份文件)

搜索 require_once View::getView('module');

在后面加上这句 echo sheli_cc();

QQ截图20170821220322.jpg

Responses
  1. 为啥不直接放到模板单独文件然后再module.php里require_once View::getView('文件);捏~

    Reply
    1. @Ricky.D.

      这样更省事易懂喽

      Reply