[外掛] Protect user account_1.2.9

Officially Approved MODs
由 phpBB Group 官方發展小組認證的 MOD!

版主: 版主管理群

版面規則
請注意!只有發表在 [2.0.x] MOD Database Releases 的外掛,才算是官方認證的外掛。
主題已鎖定
頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8629
註冊時間: 2004-04-30 01:54
來自: Taiwan

[外掛] Protect user account_1.2.9

文章 心靈捕手 » 2005-05-22 00:45

  • 前言
  • [推薦]官方認證外掛
  • [分享]中文化整理
  • [分享]安裝經驗
  • 外掛下載
前言:
討論區的安全, 應該是每位系統管理員刻不容緩的責任;
除了經由討論區系統, 不斷地推陳出新之外,
也可以藉助外掛的安裝, 來盡到最大的保護;
在這裡, 向大家推薦的, 正是這類安全性的外掛.

[推薦]官方認證外掛:
以下是該外掛檔頭:

代碼: 選擇全部

############################################################## 
## MOD Title:          Protect user account
## MOD Author:         Niels < ncr@db9.dk > (Niels Chr. R鷣) http://mods.db9.dk
## MOD Description:    This mod will prevent hacking on users
##                     password, and give the admin the posibilty
##                     to specify witch types of passwords are
##                     accepted.
## MOD Version:        1.2.9
## MOD Compatibility:  2.0.6
## 
## Installation Level: Intermediate
## Installation Time:  12 Minutes (1mn by EasyMOD of Nuttzy)
## Files To Edit:      13
##      login.php
##      admin/admin_board.php
##      admin/admin_users.php
##      includes/functions_validate.php
##      includes/page_header.php
##      includes/usercp_activate.php
##      includes/usercp_register.php
##      language/lang_english/lang_admin.php 
##      language/lang_english/lang_main.php 
##      templates/subSilver/overall_header.tpl
##      templates/subSilver/simple_header.tpl
##      templates/subSilver/admin/board_config.tpl
##      templates/subSilver/admin/users_edit_body.tpl
##
## Included Files:     4
##      protect_user_account_db_update.php
##      root/change_password.php
##      root/language/lang_english/email/bad_login.tpl
##      root/templates/subSilver/change_password_popup.tpl
##
############################################################## 
外掛描述: 這個外掛, 可以保護使用者的帳號, 避免駭客猜密碼; 並且讓系統管理員可以在控制台, 設定若干密碼的規則.

[分享]中文化整理:
Source:
http://phpbb-tw.net/phpbb/viewtopic.php?p=71498#71498
http://phpbb-tw.net/phpbb/viewtopic.php?p=167451#167451
#
#-----[ OPEN ]------------------------------------------
#
language/lang_chinese_traditional_taiwan/lang_main.php

#
#-----[ FIND ]------------------------------------------
#
?>

#
#-----[ BEFORE ADD ]------------------------------------------
#
//add on for protect useraccount mod
$lang['Error_login_tomutch']='您所輸入的會員名稱因為 <b>連續密碼輸入錯誤</b> 已被鎖定, 請稍後再試';
$lang['Password_not_complex'] ='您輸入的密碼並不符合本站的規則, 您應該確認: 密碼';
$lang['Password_to_short'] = '至少要 %d 個字元';
$lang['Password_mixed'] = '必須包含英文字母和數字';
$lang['Password_not_same'] = '不可以和您的會員名稱相同';
$lang['Time_format'] = 'D d. M, Y H:i:s';// how time should be showen in email notification
$lang['Passwd_have_expired'] = '您的密碼已經到期, 您必須變更新的密碼';
$lang['Passwd_expired'] = '您的密碼已經到期, 而不再有效; 無論如何, 您目前仍有機會去變更一個新的密碼. 假如, 因為某些因素, 您目前還不想變更新的密碼的話; 那麼, 您在下次登入時, 必須由( 傳送給我一個新的隨機密碼) 這個連結, 去獲得一個新的隨機密碼.';
$lang['Passwd_soon_expired'] = '您的密碼將在 %d 天後到期. 我們建議您在它到期前去變更一個新的密碼. 假如您的密碼到期了, 那麼, 您在下次登入時, 必須由( 傳送給我一個新的隨機密碼) 這個連結, 去獲得一個新的隨機密碼.';
$lang['Send_new_passwd'] = '傳送給我一個新的隨機密碼';
$lang['Passwd_updated'] = '感謝您<br />您的密碼已經更新';
$Lang['Passwd_title'] = '請變更您的密碼';
// End add - Protect user account MOD

#
#-----[ OPEN ]------------------------------------------
#
language/lang_chinese_traditional_taiwan/lang_admin.php

#
#-----[ FIND ]------------------------------------------
#
?>

#
#-----[ BEFFORD ADD ]------------------------------------------
#

//Added Protect useraccount mod
$lang['user_password_settings'] = '會員密碼設定';
$lang['Max_login_error'] = '當輸入錯誤密碼時鎖定使用者';
$lang['Max_login_error_explain'] = '如果一個使用者輸入錯誤密碼的次數超過這個數值, 這個帳號將會被鎖定一段時間.';
$lang['Block_time'] = '鎖定帳號時間';
$lang['Block_time_explain'] = '當一個使用者輸入錯誤密碼的次數超過" 當輸入錯誤密碼時鎖定使用者" 的數值時, 帳號將被鎖定某段( 單位: 分鐘) 時間的數值.';
$lang['User_is_blocked'] ='使用者已被鎖定';
$lang['Password_complex'] = '複合密碼';
$lang['Password_complex_explain'] = '使用者的密碼必須包含英文字母和數字';
$lang['Password_len'] = '最小密碼長度';
$lang['Password_len_explain'] = '有效數值範圍為 [ 1 - 32 ]';
$lang['Password_not_login'] = '密碼必須不同於登入名稱';
$lang['Password_not_login_explain'] = '密碼如果和登入的使用者名稱相同, 將不會被認可.';
$lang['Account_block'] = '帳號鎖定';
$lang['Account_block_explain'] = '在這裡您可以瀏覽 / 設定或重設會員的鎖定資訊';
$lang['Block_until'] ='鎖定到: %s';// %s is substituded with the date/time
$lang['Block_by'] = '鎖定, 因為 IP: %s';// %s is substituded with the ip addr.
$lang['Last_block_by'] = '最後鎖定因為 IP: %s';// %s is substituded with the ip addr.
$lang['Unblock_user'] ='解除鎖定會員帳號';
$lang['Block_user'] ='鎖定會員帳號 %s 分鐘';// %s is substituded with the date/time
$lang['Badlogin_count'] = '登入失敗的次數';
$lang['Force_new_passwd'] = '強制使用者在下次登入時變更密碼';
$lang['Password_intervall'] = '使用者被強制在幾天內必須變更密碼';
$lang['Password_expire'] = '這位使用者的密碼即將到期的時間:<br>%s';
// End add - Protect user account MOD

#
#-----[ CREATE ]------------------------------------------
#
language/lang_chinese_traditional_taiwan/email/bad_login.tpl

#
#-----[ TEXT ]------------------------------------------
#
Subject: 您在 {SITENAME} 的帳號已經被封鎖
Charset: iso-8859-1

親愛的 {USER}:


我們偵測到您的帳號有 ({BAD_LOGINS}) 次登入失敗;
\n因此, 您在 {SITENAME} 的帳號, 已被暫時停權 {BLOCK_TIME} 分鐘.

這個動作是為了確保您的帳號有最大的安全性;
您將可以在 {BLOCK_UNTIL} 之後, 使用正確的密碼, 重新嘗試登入.

如果, 您沒有嘗試登入錯誤, 卻收到此警告,
您可以考慮, 向系統管理員報告此事.

如果, 您忘記了密碼, 那麼請利用( 傳送給我一個新的隨機密碼) 這個連結, 去申請新的隨機密碼;
當然, 您可以自行再更改這個隨機密碼.

在 {SITENAME}, 我們致力於保護您的帳號,
然而如果帳號有弱點, 就算有再好的保全, 也是無用的;
因此, 您將會被建議, 嘗試利用最好的方式, 保護您的帳號和密碼.

如何降低被駭的可能:
- 千萬不要使用" 簡單的密碼", 像您的生日或寵物的名字,...等;
- 同時利用英文字母和數字, 組合成密碼;
- 越長的密碼, 越不容易被猜到;
- 在不同的網站, 使用不同的密碼( 例如: 將該網站的部分名稱, 放在密碼當中).




{EMAIL_SIG}
[分享]安裝經驗:
就安裝經驗而言, 比較容易出錯的檔案是 login.php
其他的檔案修改, 則相對地較為簡單.

尤其, 作者有部分的說明, 較為簡略,
若是比較沒有經驗的人, 則較容易出錯, 請小心修改. ;-)

外掛下載:
官方網站: http://www.phpbb.com/phpBB/viewtopic.php?t=140815
作者網站: http://mods.db9.dk/viewtopic.php?t=555

--20050622--( 感謝 DL 指正!)
1. 修改 $lang['Passwd_expired'] 部分語意( 紅字部分);
2. 修改 bad_login.tpl 部分語意( 紅字部分).
施比受有福,歡迎來信賜教,謝謝 & 再見!
祝福您 好運 ^_^
歡迎加入★★心靈捕手★★ :: 討論區!!
http://wang5555.hopto.org/phpBB3/
p.s. 奉老婆之命:在晚上十一點前,得關機睡覺!!!

頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8629
註冊時間: 2004-04-30 01:54
來自: Taiwan

[補充說明] 修改 login.php 應變之道

文章 心靈捕手 » 2005-09-05 22:57

原安裝說明( 擷取部份):

代碼: 選擇全部

# 
#-----[ OPEN ]------------------------------------------------ 
# 
login.php

# 
#-----[ FIND ]------------------------------------------------ 
# 
$redirect = str_replace('?', '&', $redirect); 
$template->assign_vars(array( 
'META' => 
); 

# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 

// Start add - Protect user account MOD 
if ($row['user_active'] ) 
. 
. 
. 
此處在 phpbb 2.0.9 to 2.0.10 時, 有所變更:
#
#-----[ OPEN ]---------------------------------------------
#
login.php

#
#-----[ FIND ]---------------------------------------------
# Line 96
$redirect = ( !empty($HTTP_POST_VARS['redirect']) ) ? str_replace('&', '&', htmlspecialchars($HTTP_POST_VARS['redirect'])) : '';
$redirect = str_replace('?', '&', $redirect);

#
#-----[ AFTER, ADD ]---------------------------------------------
#
if (strstr(urldecode($redirect), "
") || strstr(urldecode($redirect), "
"))
{
message_die(GENERAL_ERROR, 'Tried to redirect to potentially insecure url.');
}
http://www.phpbb.com/phpBB/viewtopic.php?t=211069

也就是說, 您發現的一整段( 多了紅字的部份) 如下:
$redirect = str_replace('?', '&', $redirect);

if (strstr(urldecode($redirect), "
") || strstr(urldecode($redirect), "
"))
{
message_die(GENERAL_ERROR, 'Tried to redirect to potentially insecure url.');
}


$template->assign_vars(array(
'META' => "<meta http-equiv=\"refresh\" content=\"3;url=login.$phpEx?redirect=$redirect\">")
);
應變的方法是, 您只要將新增的程式碼, 加在下列程式碼之後, 即可:

代碼: 選擇全部

					$template->assign_vars(array(
						'META' => "<meta http-equiv=\"refresh\" content=\"3;url=login.$phpEx?redirect=$redirect\">")
					);
施比受有福,歡迎來信賜教,謝謝 & 再見!
祝福您 好運 ^_^
歡迎加入★★心靈捕手★★ :: 討論區!!
http://wang5555.hopto.org/phpBB3/
p.s. 奉老婆之命:在晚上十一點前,得關機睡覺!!!

頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8629
註冊時間: 2004-04-30 01:54
來自: Taiwan

文章 心靈捕手 » 2007-03-19 18:48

-- 以下是原文轉貼 --
心靈捕手 寫:
brentsu 寫:
心靈捕手 寫: 我在升級後, 測試結果:
如果您原本安裝 Protect user account 1.2.9 後,
設定的" 當輸入錯誤密碼時鎖定使用者" 的次數,
小於升級 phpbb 2.0.19 後設定" 可容許的登入嘗試次數" 的話,
那麼系統還是會以前者的設定次數, 做為封鎖的依據;
反之, 則以後者的設定次數, 做為封鎖的依據.

另外, Protect user account 1.2.9
提供了其他功能的設定, 如: 複合密碼, 最小密碼長度,...等,
一樣是有效的.

我比較認同 ~倉木麻衣~ 兄的看法:

代碼: 選擇全部

比較特別的是?[入了類似Protect user account的機制 
http://phpbb-tw.net/phpbb/viewtopic.php?p=221905#221905
我剛剛才裝好 2.0.19 的升級版... 還不知道被攻擊的保護效果如何...
可是現在才想加裝【 Protect user account 1.2.9 】,這裡有提到:

http://phpbb-tw.net/phpbb/viewtopic.php?t=35416

想請問【心靈捕手】我升級到 2.0.19 之後,這樣還能裝那個有點老舊的【保護使用者帳號】外掛嗎?

而且要改的地方太多了,我擔心 2.0.20 出來,又得手動升級半天 ~"~

先感謝回應囉~
抱歉! 現在才回您的問題.

其實, 如果 phpbb 是已經更新到 2.0.19 版的話,
那麼是可以不必再安裝這個外掛 Protect user account 1.2.9 的.

因為, 新版已經加入了這個外掛最重要的功能--"可容許的登入嘗試次數".

當然, 您還是可以加裝;
就如引言部份所提到的,
此外掛尚保有其他的功能設定.
http://phpbb-tw.net/phpbb/viewtopic.php?p=224460#224460

此官方認證外掛, 參考連結已更新. 如下:
http://www.phpbb.com/community/viewtopic.php?t=140815
施比受有福,歡迎來信賜教,謝謝 & 再見!
祝福您 好運 ^_^
歡迎加入★★心靈捕手★★ :: 討論區!!
http://wang5555.hopto.org/phpBB3/
p.s. 奉老婆之命:在晚上十一點前,得關機睡覺!!!

頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8629
註冊時間: 2004-04-30 01:54
來自: Taiwan

[轉貼] Re: [問題]如何強制規定登入密碼需6位數以上

文章 心靈捕手 » 2007-03-21 21:07

如果您論壇已經升級到 2.0.19 版以上,
有 '密碼安全' 的需求, 卻又不想安裝此外掛的話,
那麼您可以參考此文, 做點小修改.

此修改的部份, 乃參考此外掛及網友精隨,
並不屬於官方認證外掛.


-- 以下是原文轉貼 --
ycl8000 寫:版本:phpBB-2.0.22

有些USER貪方便,密碼只設1個字,
請問如何改成密碼必須6個字以上,
而且必須含數字,英文大小寫.
建議您:
補齊發問格式
http://phpbb-tw.net/phpbb/viewtopic.php?t=15329

您的需求, 可以透過這支官方認證外掛 Protect user account 來完成.
http://phpbb-tw.net/phpbb/viewtopic.php?t=35416

但是若只是關於上述這兩個需求的話, 則可以參考以下的改法.
ps. 部分內容擷取 michaelchain 的方法.
#
#-----[ OPEN ]-----
#
includes/usercp_register.php

#
#-----[ FIND ]-----
#

代碼: 選擇全部

		else if ( strlen($new_password) > 32 )
		{
			$error = TRUE;
			$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Password_long'];
		}
#
#-----[ AFTER, ADD ]-----
#

代碼: 選擇全部

		// 設定會員密碼最小長度 6
		else if ( strlen($new_password) < 6 ) 
		{ 
			$error = TRUE; 
			$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Password_short']; 
		}
		// 設定會員密碼必須含有英文字母及數字
		else if ( ! (preg_match("/[a-zA-Z\.]/",$new_password) && preg_match("/[0-9\.]/",$new_password)) ) 
		{ 
			$error = TRUE; 
			$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Password_mixed']; 
		}
#
#-----[ OPEN ]-----
#
language/lang_chinese_traditional_taiwan/lang_main.php

#
#-----[ FIND ]-----
#

代碼: 選擇全部

?>
#
#-----[ BEFORE, ADD ]-----
#

代碼: 選擇全部

// 密碼安全
$lang['Password_short'] = '您所設定的密碼必須六個字以上';
$lang['Password_mixed'] = '您所設定的密碼必須包含英文字母和數字';
#
#-----[ SAVE & CLOSE ]-----
#

-- 資料來源 --
http://phpbb-tw.net/phpbb/viewtopic.php?p=255387#255387
施比受有福,歡迎來信賜教,謝謝 & 再見!
祝福您 好運 ^_^
歡迎加入★★心靈捕手★★ :: 討論區!!
http://wang5555.hopto.org/phpBB3/
p.s. 奉老婆之命:在晚上十一點前,得關機睡覺!!!

主題已鎖定

回到「官方認證外掛」