wordpress 后台登录增加访问效验

目前已知的增加 wordpress 后台登录安全的方案有三种:

  1. 安全插件:如Limit Login Attempts Reloaded、WPS Hide Login 等等;
  2. 登录 URL 增加自定义key,因为这个key只有自己知道,所以增加了直接访问后台的困难性。
  3. 前后台区分 URL 访问,如 www.abc.com 访问前台;admin2.abc.com 访问后台。

我习惯了使用第二种方案,增加直接访问后台登录地址的困难性。
下面记录一下,个人认为需要强调的点和配置的过程。

一、主题目录下 wp-content\themes\theme\functions.php 或者 全局 wp-includes\functions.php 增加如下代码

///增加登录key,没有key跳转到首页
add_action('login_enqueue_scripts','login_protection');
function login_protection(){
    if($_GET['chKey'] != 'Login') header('Location: /');
}

二、接下来,说下遇到的几个问题:
      1、只修改get访问,可以直接 post 请求发送账号密码,跳过了页面。
      2、$_GET 下标 不能定义为 key,不然参数会消失,直接跳回首页。
      3、如果输错密码,不返回重新输入密码页面,会直接跳到首页。

针对这几个问题,看下解决方案:

  • 针对 post 请求解决方案:
///①、修改wp-login.php登录页面代码
<!-- 在原有的URL的基础上新增了参数	-->
<form name="loginform" id="loginform" action="<?php echo esc_url( site_url( 'wp-login.php', 'login_post' ) ).'?chKey=Login'; ?>" method="post">
<!-- 新增的参数	-->
<input type="hidden" readonly="readonly" value="Login" name="chKey">
///②、调整 login_protection 函数
function login_protection(){
    if($_GET['cusKey'] != 'cusLogin'){ header('Location: /'); }
    if((isset( $_POST['log'] ) || isset( $_POST['pwd'] )) && $_POST['chKey'] != 'Login'){ 
		header('Location: /'); 
	}
}
  • 针对 $_GET 下标解决方案
       不定义为 key 就完了嘛!

  • 输错密码会直接跳到首页解决方案
       首先说产生这个事情的原因是后台是根据表单的 action 地址回跳的,由于第一个问题已经修改了表单的 action 地址,所以这个问题也同时解决了

三、仔细看的话,点击 忘记密码 也会跳到首页,一般保留好密码是不会忘记的,如果你想以防万一调整下忘记密码的 URL 即可:后缀增加 &chKey=Login。

四、调整错误信息提示
   输错账号或密码时,发现提示信息并不够友好,这对于有点强迫症的我,是忍受不了的。
在这里插入图片描述
   将 wp-login.php 文件中的代码 echo '<div id="login_error">' . apply_filters( 'login_errors', $errors ) . "</div>\n"; 修改为 echo '<div id="login_error">'. print_r($errors,true) . "</div>\n";

   再来看看显示效果
在这里插入图片描述

基本调整到此结束。

转载于:https://www.cnblogs.com/xianhenyuan/p/11085228.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值