当前位置:首页 > WordPress代码·功能 > 正文

利用Session判断限制登录页面次数,防止暴力破解 – WordPress范例(一)

暴力破解也是够烦的,成天收到阿里提示,也是一般也就看一眼,从来不关注,偶尔服务器窘个机随手重启下,无所谓,反正基本都是无目的的尝试,也基本破解不开..

不过昨天下午,服务器窘机了一下午,起初以为是暑假了有小学生CC,后来发现重启一直cpu占用100% 阿里后台登陆 ssh 直接提示内存溢出,然后我利用无数次重启的间隙 top 查看了下 ihuan.me这个php主机占用和MySQL占用lv高达99%

心里顿时一万只草泥马在奔腾,然后把php-fpm设置到最低 服务器差不多也算能正常工作下,看了下php日志 tm 十几G前段时间刚清的....

然后日志绝大部分都是请求wp的登陆,赶脚不能再不理的,实在太烦人了...

wp好久不折腾也不是很熟悉了,搜了下,有相关插件,不过本着折腾的心理,决定还是不用了~

反正wordpress的登陆也是个php页面,和不直接开刀页面,岂不是更方便,执行时直接跳过WordPress的主程序,感觉应该比插件更效率些,毕竟他们还要走一遍WP,资源上感觉太浪费,毕竟那些插件主要是为了防破解,而不是防止资源的占用

果断动手,使用Session判断,不知道是什么鬼的自行百科

首先小幻我浏览了一下WordPress的登陆文件 wp-login.php的相关内容,对登陆也算有了基本了解,大部分还是要走主程序,那么判断为了节约资源走主程序实在浪费了,如果wp是个人博客,下面这个可能有点帮助,不是的话,可能不太适用

我的想法是这样的,判断wp的登陆页面的访问次数,正常访问,一般不会闲的无聊一直刷登陆页面,那么直接判断登录页面的访问次数,如果次数达到一定值,则直接exit程序,阻止程序继续运行。

如果你开启xmlrpc.php,暴力破解可能会利用这个接口破解,没有必要的话,这个接口可以关闭掉

关于xmlrpc的相关可以看以前的这篇文章

关于WordPress密码暴力破解、XML-RPC协议的一些事

代码基本写好,直接放进wp-login.php顶部即可正常运行,测试了下,在预定时间内访问超过次数后,页面直接返回空白,程序ok~

/*
name:判断页面访问次数最大次数阻止
author:小幻
url:ihuan.me
*/
define('count_num','4');//访问最大次数
define('count_time','3600');//访问最大时间
session_start();//开启session
$now_time = time();
//判断session存在,赋值
if ($_SESSION){
    $last_time = $_SESSION['last_time'];
    $times = $_SESSION['times'] + 1;
    $_SESSION['times'] = $times;
}else{
    $last_time = $now_time;
    $times = 1;
    $_SESSION['times'] = $times;
    $_SESSION['last_time'] = $last_time;
}
//开始时间判断,如果超过时间次数,则退出程序
if(($now_time - $last_time) < count_time){ if ($times>=count_num){
        exit;
    }
}else{
    $times = 0;
    $_SESSION['last_time'] = $now_time;
    $_SESSION['times'] = $times;
}

各个步骤的相关注释已经写好在上面了,赋值之类的就不多加说明了~

限制方法很多种 Session 也只算一种而已,以后相关内容会继续跟进~

大家可以到 http://ihuan.me/wp-login.php 访问几遍就能看到结果了

标签:
上一篇: 下一篇:

22 条评论

评论加载中...
  1. 11楼
    来自天朝的朋友 谷歌浏览器 Windows 7
    奇跡の海  

    这个太有帮助了,后台记录总有密码失败的,挺烦的

    2017年8月13日 10:37 评论

发表评论

不理你。不要啊!吃饭。吃惊。吃西瓜。飞吻!恭喜!Hi纠结!膜拜!OK抛媚眼。泡泡糖。抛钱。忍!生闷气!调皮。偷看。委屈。献花。疑问?抓狂!

小提示:Ctrl+Enter快速提交助您一臂之力~
加载中……