2013-02-01 102 views
-1

如何更改joomal中新用戶的密碼加密。 我試圖修改joomla用戶註冊的加密

getSalt($encryption = 'md5-hex', $seed = '', $plaintext = '') 

getCryptedPassword($plaintext, $salt = '', $encryption = 'md5-hex', $show_encrypt = false) 
library.joomla.user.helper的

,但通過修改這兩個功能的舊用戶無法登錄!

+1

我想如果你想使用2種不同的加密方式,你需要設置一些額外的參數來識別當前需要使用的女巫加密。 – Aivar

+0

實際上,有一個活躍的joomla網站有大量的用戶,另一個基於php的網站只使用md5密碼,所以我必須找到一種方法來存儲joomla密碼和MD5加密算法。 –

回答

1

我只是看了看Joomla的源代碼和,而的Joomla確實技術上已經具備的功能:

  1. 選擇從各種各樣的更好[但不是很大]口令存儲散列算法。
  2. 如果算法發生變化,請將算法名稱與散列一起存儲。

這些東西都沒有在代碼中實際使用過。

這意味着:

  1. 你永遠只能改變這個你的在這兩個函數定義修改$encryption = 'md5-hex'安裝之前。
  2. 在任何其他時間更改它將使您的所有密碼無效,包括管理員密碼。

證據:

$ grep -r getCryptedPassword ./* 
./components/com_users/models/reset.php:    $crypted  = JUserHelper::getCryptedPassword($data['password1'], $salt); 
./components/com_users/models/reset.php:    $testcrypt = JUserHelper::getCryptedPassword($data['token'], $salt); 
./installation/models/configuration.php:    $crypt = JUserHelper::getCryptedPassword($options->admin_password, $salt); 
./libraries/joomla/user/user.php:      $crypt = JUserHelper::getCryptedPassword($array['password'], $salt); 
./libraries/joomla/user/user.php:        $crypt = JUserHelper::getCryptedPassword($array['password'], $salt); 
./libraries/joomla/user/helper.php:  public static function getCryptedPassword($plaintext, $salt = '', $encryption = 'md5-hex', $show_encrypt = false) 
./plugins/authentication/joomla/joomla.php:      $testcrypt = JUserHelper::getCryptedPassword($credentials['password'], $salt); 

你可以清楚地看到,有沒有getCryptedPassword()單個調用指定的「加密」類型,所以從功能定義默認總是使用。

所以在一個新的安裝,解壓縮文件和實際運行安裝腳本,您可以更改函數定義之間:

getSalt($encryption = 'crypt-blowfish', $seed = '', $plaintext = '') 
getCryptedPassword($plaintext, $salt = '', $encryption = 'crypt-blowfish', $show_encrypt = true) 

這將改變散列算法的最佳選擇[IMO],如以及隨密碼一起存儲散列類型,以便您可以更改算法,而不會使所有舊密碼無效。

想想吧,如果您先運行如下的查詢來指定當前算法,那麼您現在可以更改算法。

UPDATE TABLE users 
SET password = CONCAT('{MD5}', password) 
WHERE password NOT LIKE '{%' 

但是當然你必須使用正確的表格和字段名稱。

+0

感謝您的幫助,我會照你說的去做,我會公佈結果。再次感謝。 –