破解也是够烦的,成天收到阿里提示,也是一般也就看一眼,从来不关注,偶尔服务器窘个机随手重启下,无所谓,反正基本都是无目的的尝试,也基本破解不开..
不过昨天下午,服务器窘机了一下午,起初以为是暑假了有小学生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 访问几遍就能看到结果了
未经允许不得转载:哈勃私语 » 利用Session判断限制登录页面次数,防止暴力破解 – WordPress范例(一)
本文共1502个字 创建时间:2017年2月18日11:15