您查询的关键词是:简单 PHP 网站 源  
下面是原始网址 https://www.newbii.cn/20200106193555.htm 在 2020-09-11 18:07:34 的快照。

360搜索与该网页作者无关,不对其内容负责。

PHP教程:zblogphp简易防CC攻击代码-php教程-菜鸟博客

PHP教程:zblogphp简易防CC攻击代

PHP教程:zblogphp简易防CC攻击代码-第1张-菜鸟博客

作为站长或者公司的网站的网管,什么最可怕?显然是网站受到的DDoS攻击。其中CC最为常见的的一种

在这里分享一个简易的php防cc代,仅供学习参考

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)<60){if($cc_times>=3){header(sprintf('Location:%s', 'http://127.0.0.1'));exit;}//60秒内刷新3次以上可能为cc攻击
}else{$cc_times = 0;$_SESSION['cc_lasttime'] = $cc_nowtime;$_SESSION['cc_times'] = $cc_times;}
}
//或
function sheli_cc(){
//代理IP直接退出
empty($_SERVER['HTTP_VIA']) or exit('Access Denied');
//防止快速刷新
session_start();
$seconds = '60'; //时间段[秒]
$refresh = '3'; //刷新次数
//设置监控变量
$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;
}
}
//或这个需开启redis
function filter_cc() {
//时间间隔
$TIME_SPAN = 3;
//最大请求数
$MAX_REQUEST = 50;
//两参数组合起来就是:限制同一IP的客户在多少时间间隔内允许的最大请求数是多少。
$this->load->model("tb_empty"); //这是redis类
$key = "Filter:CC:";
$ip = $this->get_client_ip();
$keys = $key.$ip;
$this->tb_empty->redis_incr($keys);
if($this->tb_empty->redis_ttl($keys) == -1)
{
$this->tb_empty->redis_setTimeOut($keys,$TIME_SPAN);
}
if($this->tb_empty->redis_get($keys) > $MAX_REQUEST)
{
$http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';
$uri = $http_type.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
exit("<meta http-equiv=\"refresh\" content=\"3;url={$uri}\"> <label>loading...</label>");
}
}

如果你也跟楼猪一样用的是zblog,那么复杂 上面其中一段添加至你的主题目录文件include.php

然后在你的主题模板template目录footer.php(任意地方)添加标签{sheli_cc()}即可

然而,你以为这样就没事了?

在这里推荐其他方法,如果你是宝塔用户,可以安装一个Fail2ban防爆破插件(简单暴力)。

还可以使用知道创宇抗D宝,功能集成了:抗D宝、加速乐、创宇盾和其它有利于SEO优化的功能,根据自己实际情况开启即可防御,推荐默认选项即可。

在这里就不多说废话了,又说我打广告

猜你喜欢

发表评论