日历存档: 2013 年 12 月 25 日

WordPress防CC攻击

分类:折腾日期:2013-12-25 - 10:03:37评论:18条作者:老谢

作为一个用小内存vps的博主,博客只要被人有意的狂刷新负载就会飙升,使用wp-super-cache生成静态页面,可以有效的解决这个问题,但是会导致访问计数postviews插件失效,无法统计到访问数量,以前使用WP-PostViews和WP Super Cache冲突导致不计数的解决办法,在postviews最后一次更新后,这个办法也不能用了,搜了其他版本也没能解决这个问题,于是也懒得折腾了,使用下面一段防CC的代码就能解决狂刷新造成vps负载飙升的问题,见下面的代码复制到模板的function.php文件即可:

//防止CC攻击
session_start(); //开启session
$timestamp = time();
$ll_nowtime = $timestamp ;
//判断session是否存在 如果存在从session取值,如果不存在进行初始化赋值
if ($_SESSION){
  $ll_lasttime = $_SESSION['ll_lasttime'];
  $ll_times = $_SESSION['ll_times'] + 1;
  $_SESSION['ll_times'] = $ll_times;
}else{
  $ll_lasttime = $ll_nowtime;
  $ll_times = 1;
  $_SESSION['ll_times'] = $ll_times;
  $_SESSION['ll_lasttime'] = $ll_lasttime;
}
//现在时间-开始登录时间 来进行判断 如果登录频繁 跳转 否则对session进行赋值
if(($ll_nowtime - $ll_lasttime) < 3){
  if ($ll_times>=5){
header("location:http://127.0.0.1");
  exit;
  }
}else{
  $ll_times = 0;
  $_SESSION['ll_lasttime'] = $ll_nowtime;
  $_SESSION['ll_times'] = $ll_times;
}

使用上面的代码后,产生大量请求的访问者将被重定向到127.0.0.1,源码来自:WordPress防CC攻击代码(续)

Tags: