-
今天,陈德馨想讲述下如何通过添加 WordPress 动作阻止某些用户名(黑名单)的注册和登录,在注册或登录之前通过程序判断校验用户名合法性才可进行注册或登录操作,这样做可以保留用户名,也达到防止暴力破解的效果。
黑名单的必要性
WordPress 是目前世界上最受欢迎的开源建站系统,这也代表着想打 WordPress 系统主意的人也很多,如果你也使用 WordPress,而且你允许用户访问你的登录页(wp-login.php),那你肯定也经常在网站访问日志中看到有很多恶意登录的记录,都是使用一些常用的用户名和密码字典进行反复尝试登录,虽然一般都不会破解到帐号密码,但是这样的扫描也浪费了不少服务器资源。
因为 WordPress 的系统结构的原因,黑客很容易就能获取到管理员(也就是第一个用户)的用户名,然后使用这个用户名进行暴力破解。但是,如果我们拒绝这个用户名的登录动作,那无论破解工具跑多久都不会有结果。
解决思路
通过判断注册和登录 POST 数据中的用户名决定是否允许执行注册或登录动作。
注册判断使用 register_post 动作,登录判断使用 wp_authenticate 动作。
实现代码:
//~ 注册登录检查 function dexin_check_authentication($username){ //~ 用 | 分割用户名,且 | 前后不留空格 $black_list = 'admin|administrator|guest|root|test|tester'; if( !empty($black_list) ){ $black_list = explode('|', $black_list); if( in_array($username, $black_list) ){ wp_die( __( '该用户名已被系统保留,不能用于注册或登录!', 'dexin' ), '', array( 'back_link'=>true ) ); } } } add_action ('wp_authenticate' , 'dexin_check_authentication'); add_action ('register_post' , 'dexin_check_authentication');
以上的代码拒绝了 admin、administrator、guest、root、test、tester 这几个用户名的注册和登录动作,当然了,如果你只想拒绝登录,你可以把这行删掉:
add_action ('register_post' , 'dexin_check_authentication');
如果你只想拒绝注册,你可以把拒绝登录这行删掉:
add_action ('wp_authenticate' , 'dexin_check_authentication');
如果你想要注册黑名单和登录黑名单不一样,你可以分别调用两个不同函数。但是!请注意:在这个名单里的用户名都不能注册或登录,包括管理员(假如管理员用户名也在里面的话)。
建议给 WordPress 添加邮箱登录功能,然后把管理员用户名也加入黑名单,然后使用管理员邮箱登录,这样做的话,那些使用获取到的管理员用户名进行暴力破解的就全都被拒绝登录动作了!
WordPress添加注册和登录用户名黑名单
1755人参与 |分类: 站长百科|时间: 2014年09月29日
相关文章
- 2020-05-09WordPress使用timthumb.php截取文章缩略图
- 2018-11-09一键安装KMS服务脚本 搭建自己的KMS激活服务器教程
- 2018-10-30Windows 10系统的3D Objects(3D对象)文件夹如何删除
- 2018-03-16WINGHO..文件夹删除方法
- 2017-12-23WordPress博客什么时候才需要使用缓存插件?
- 2017-12-05WordPress站点SEO优化中需要避开6个常见错误
- 2017-11-11升级WordPress时提示’另一更新正在进行’的解决方法
- 2017-11-02WordPress上传文件自动重命名
- 2017-10-28WordPress前台显示用户的注册时间
- 2017-08-15WordPress发布/更新文章、提交/审核评论自动清理阿里云CDN缓存
评论专区德信商城