WordPress被恶意使用找回密码功能、如何禁用重置密码、忘记密码功能?

admin 2019年10月27日16:33:08 评论 91

当你忘记了WordPress管理员密码,最简单的方法就是在WordPress登陆界面点击忘记密码,通过发送邮件的方法重置。但是最近受到一些人恶意的使用这个功能,导致大量垃圾邮件,特意来写一个这样的教程!

这个功能确实很实用,不过便利的同时也会带来一些弊端,比如恶意点击重置,导致收到骚扰邮件,甚至通过邮件来获取后台。为了保障网站安全,有时候会选择禁用WordPress密码重置功能。如何彻底禁用WordPress密码重置功能?下面介绍具体方法。

WordPress如何禁用邮件重置密码功能?

进入WordPress后台,打开 functions.php,添加以下php代码:

function disable_password_reset() {
       return false;
    }
add_filter ( 'allow_password_reset', 'disable_password_reset' );

当用户再次点击重置密码时,就会提示不能重设该用户的密码。

WordPress如何禁用重置密码、忘记密码功能?

 

WordPress如何禁用登录页忘记密码功能?

WordPress如何禁用重置密码、忘记密码功能?

如何禁用登录页“忘记密码”功能?进入WordPress后台,将以下代码添加到当前主题 functions.php 中:再通过以下代码实现屏蔽登录页面的“忘记密码”链接以及按钮:

function hide_password_reset() { ?>
<style>
#nav a:nth-child(2) {
display: none;
}
.login #nav {
display: none;
}
</style>
<?php }
add_action('login_head', 'hide_password_reset');

屏蔽登录页面的“忘记密码”链接以及按钮就是给登录页面新增了CSS,原理很简单。

禁止特定用户

如果仅仅是禁止某些特定的用户使用这个功能,可以在主题的 functions.php 添加下面的代码:

add_filter('allow_password_reset', 'no_reset', 10, 2 );
function no_reset( $bool, $user_id ) {
	$ids = array( 3, 10 ); // 要禁止的用户ID
	if ( in_array( $user_id, $ids ) )
		return false;
	return true;
}

要禁用的ID就不用多说了,都能看懂。

扩展应用

那么如何才能禁止用户编辑“我的个人资料”中的电子邮件,今天就分享下,通过 jQuery 给表单添加禁用 disabled="disabled" 或 只读 readonly="readonly" 属性来禁止用户编辑字段的方法。将下面的代码添加到主题的 functions.php 文件即可:

/**
 * WordPress 禁止用户编辑个人资料的某些字段
 */
global $pagenow;
if ( !current_user_can( 'manage_options' ) && $pagenow == 'profile.php' ) {
	add_action( 'admin_footer', 'disable_userprofile_fields' );
}
 
function disable_userprofile_fields() {
	?>
	<script>
		jQuery(document).ready( function($) {
 
			//禁止编辑“电子邮件”(input 举例)
			if ( $('input[name=email]').length ) {
				$('input[name=email]').attr("disabled", "disabled");
			}
 
			//禁止编辑“个人说明”(textarea 举例)
			if ( $('textarea[name=description]').length ) {
				$('textarea[name=description]').attr("readonly", "readonly");
			}
 
			//禁止编辑“公开显示为”(select 举例)
			if ( $('select[name=display_name]').length ) {
				$('select[name=display_name]').attr("disabled", "disabled");
			}
 
		});
	</script>
	<?php
}

以上代码可以实现 非管理员用户无法编辑 电子邮箱、个人说明、公开显示为 。你可以根据自己的需要进行修改,只要查看源代码找到表单的 name 属性,修改一下就可以禁止修改任何字段。

admin

发表评论

您必须才能发表评论!