[WordPress插件] 登陆页面使用 Javascript 增加5秒盾防护

这是 AIYA-Optimize 里集成的一个功能,方法我单独抽出来,打包了插件。

功能就是给登陆页面增加了一个JS的5秒盾。插件只有一个文件,你可以直接复制里面的方法到主题的 function.php 里。

[afdian_look]

蓝奏云的文件

全部插件:https://yeraph.lanzoul.com/b00jdjti7c  / 密码:gqoo

[/afdian_look]

文件中的第一个方法里(第27行和第29行),有两个变量可以设置:

//获取参数设置
$auth_param = 'login_auth_success';
//等待时间设置
$wait_time = 5;

第一个变量是JS自动跳转的参数,第二个变量是JS倒计时的时间(秒)。


功能的逻辑是这样的,

在登陆页面等待 5 秒后,自动跳转到带有访问参数的真实登录页面。

如果等待时间设置为 0 ,则不会通过JS自动跳转,手动填写访问参数后可以打开登录页面。

访问参数的结构是 /wp-login.php?auth=login_auth_success , ?auth= 后面就是变量中设置的跳转参数。

 

这个插件的灵感来源是最广为流传最经典登录页面增加参数修改WP后台登录地址的方法:


add_action('login_enqueue_scripts','login_protection');  
function login_protection(){  
    if($_GET['word'] != 'press')header('Location: home_url()');  
}

上面这个方法放现在的话,主要是两个问题,

1、得手动填写URL参数,比较麻烦。

2、上面这个方法是在WP加载静态文件时候触发检测的,现在WP后台爆破都是一些直接向WP接口发送 POST 数据请求的并发脚本,防御不一定有效。

 

于是简单说一下这个插件的防御方法,

1、首先是通过插入 </from> 提前结束表单,破坏了登录表单的结构,所以无法正常验证登录,防止一些基于浏览器客户端的传统爆破。

2、对于直接向接口发送数据的脚本,在登录表单里额外增加了一个隐藏的输入框用于验证,这样通过一些自动提交方式的爆破脚本提交的表单就会不完整,所以也无法正常验证登录。

 

但,对于 REST API 请求的登录,这个插件是防不到的,这个可能需要使用 JWT 之类的插件增加额外验证。

如果真有人闲的发慌手动爆破之类的,那一样是防不到的。

 

这个插件只是根据我用WP这些年的经验,防一些广撒网式WP的扫站脚本之类的。

THE END
夜华子酱我知道你很急,但你先别急