利用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~

  1. /*
  2. name:判断页面访问次数最大次数阻止
  3. author:小幻
  4. url:ihuan.me
  5. */
  6. define('count_num','4');//访问最大次数
  7. define('count_time','3600');//访问最大时间
  8. session_start();//开启session
  9. $now_time = time();
  10. //判断session存在,赋值
  11. if ($_SESSION){
  12. $last_time = $_SESSION['last_time'];
  13. $times = $_SESSION['times'] + 1;
  14. $_SESSION['times'] = $times;
  15. }else{
  16. $last_time = $now_time;
  17. $times = 1;
  18. $_SESSION['times'] = $times;
  19. $_SESSION['last_time'] = $last_time;
  20. }
  21. //开始时间判断,如果超过时间次数,则退出程序
  22. if(($now_time - $last_time) < count_time){ if ($times>=count_num){
  23. exit;
  24. }
  25. }else{
  26. $times = 0;
  27. $_SESSION['last_time'] = $now_time;
  28. $_SESSION['times'] = $times;
  29. }

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

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

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

未经允许不得转载:哈勃私语 » 利用Session判断限制登录页面次数,防止暴力破解 – WordPress范例(一)

本文共1502个字 创建时间:2017年2月18日11:15   

分享到:更多 ()