[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的扫站脚本之类的。
暂无评论