最近齁,我發現有幾個管理的網站有外掛只要沒有更新在最新狀態,有一些是不能隨便更新的,結果它有一些漏洞產生,就會有機會被網路上的駭客機器人掃描並且攻擊,通常都是瘋狂被 TRY 後台試圖要打進來,我就遇過客戶密碼太簡單被 TRY 出來,被進來放了一堆木馬。
然後客戶對於預防勝於治療這件事永遠都學不乖,總是要幫其善後處理,其實直接關閉了這個功能就好了,正常狀況下不會常需要重置密碼的,直接給它關掉啦,一了百了。不過這方式不適合有大量使用者會員需要登入使用的喔!很適合一些中小企業管理環境單純不複雜的,甚至有專屬人員在管理的。
很簡單,適用於所有 WordPress 網站
// 移除密碼重置的連結文字
function uni_remove_lostpassword_text ( $text ) {
//if ($text == 'Lost your password?'){$text = '';}
if ($text == '忘記密碼?'){$text = '';}
return $text;
}
add_filter( 'gettext', 'uni_remove_lostpassword_text' );
// 重置密碼關閉並且轉址
function uni_disable_lost_password() {
if (isset( $_GET['action'] )){
if ( in_array( $_GET['action'], array('lostpassword', 'retrievepassword') ) ) {
//wp_redirect( wp_login_url(), 301 );
wp_redirect( '/?p=xxx' );
exit;
}
}
}
add_action( "login_init", "uni_disable_lost_password" );
我都有註解了,這兩段透過 Code Snippet 新增一組直接啟用就可以生效了。
if ($text == ‘忘記密碼?’){$text = ”;} 這段解釋意思是偵測頁面上的 忘記密碼? 字眼,並且替換成空白或者任何你想換的字,今天我們是要移除,所以就用 ‘ ‘ 包起來就好了。我有留一串註解是給英文介面的 WordPress,自己看狀況切換使用或者自由發揮即可。
wp_redirect( ‘/?p=xxx’ ); 其中的 xxx 就是請到頁面中,滑鼠指到 “編輯” 就會看到網址有一串類似
wp-admin/post.php?post=xxx 這種編號,這邊是設定點了重置密碼連結或者手動輸入重置密碼網址強制過來後要強制轉址到哪的設定。
/wp-login.php?action=lostpassword or /wp-login.php?action=retrievepassword 這都可以強制進入重置密碼,也就是說這種通常都是機器人或者熟悉 WordPress 的人會用的進入方式,它是 action 行為,所以我們要將其關閉掉。
上面有註解的 //wp_redirect( wp_login_url(), 301 ); 意思是直接透過網址進來的就轉到登入頁面,我覺得這有點脫褲子放屁,等於直接影響到那種有用 WPS Hide Login 登入位置的,但我還是留著給有需要的人。
#2022/06/26 更新
追加一段全站關閉的語法
function disable_password_recovery( $action ) {
if ( in_array( $action, array( 'lostpassword', 'resetpass' ) ) ) {
unregister_action( $action );
}
}
add_action( 'registered_action', 'disable_password_recovery' );