学习

给WordPress后台登录加上验证码

2020年2月9日

最近一段时间查看统计器,发现有很多流量是浏览后台的登录文件,几乎每隔一段时间就会出现,估计是机器扫描。

经常查看WordPress资料人都知道,WordPress虽然好用,但是因为开源的原因,很多不法份子会利用WordPress的漏洞来攻击网站。

我曾经在以个技术群里看到,有人可以在几分钟之内让一个WordPress的站点瘫痪。虽然一直使用最新版可以解决,但是还是推荐大家多使用一些技术来保障自己的站点。

第一,一定要把自己的站点WordPress程序升级到最新版,最新版的漏洞永远是最少的相对是最安全的。

第二,使用各种功能防护自己的站点。

今天我把本站的后台登录页面手动添加了验证码。以此来防止被机器暴力破解。

WordPress的后台登录默认只有用户名和密码两项。如果有站长把自己的后台密码设置过于简单的话,容易被破解。

一定要设置比较特殊的代码。不要把密码曝光。

给wordpress后台登录添加验证码非常加单。只需要一段简单的代码即可。

在WordPress站点的当前主题 functions.php 下,增加验证代码,代码如下:

function login_val_fields() {
	//获取两个随机数, 范围0~9
	$num1=rand(0,9);
	$num2=rand(0,9);
	echo "<p><label for='math' class='small'>验证码</label> $num1 + $num2 = ?<input type='text' name='sum' class='input' value='' size='25' tabindex='4'>"."<input type='hidden' name='num1' value='$num1'>"."<input type='hidden' name='num2' value='$num2'></p>";
}
add_action('login_form','login_val_fields');
function login_val() {
	if(isset($_POST['sum'])){
		//获取用户提交的计算结果
		$sum=$_POST['sum'];
		switch($sum){
			//得到正确的计算结果则直接跳出
			case $_POST['num1']+$_POST['num2']:break;
			//未填写结果时的错误讯息
			case null:wp_die('错误: 请输入验证码.');
			break;
			//计算错误时的错误讯息
			default:wp_die('错误: 验证码错误,请重试.');
		}
	}
}
add_action('login_form_login','login_val');

把以上代码复制到 functions.php 保存即可。

在返回后台登录的时候就出现随机的加法验证码。自己可以把

$num1=rand(0,9);
$num2=rand(0,9);

这两段代码的9数字增大,以增加验证码的范围。意思是加法验证码的两个数从0到多少之间的随机数。

大家可以试试效果。