2012-07-25 81 views
5

我想在未安裝TYPO3的外部網站上創建TYPO3的自定義註冊組件(我只是使用它的數據庫)。問題是我沒有使用TYPO3的經驗。我想知道是否有人知道如何爲TYPO3創建正確的密碼加密?該密碼是這樣的:使用PHP創建TYPO3醃製密碼?

$ P $ CEO/XYcbzRH9nLpCwKdp1HhsJGwJum0

我要尋找一個PHP代碼來創建相同的加密和校驗密碼。我有安裝工具的加密密鑰(我相信)用於醃製。

或者是否有將密碼保存爲MD5的可能性?不是最好的選擇,但我可以成爲唯一的選擇。

我發現這個網址: http://srv123.typo3.org/TYPO3/Extensions/saltedpasswords/4.6/#compatibility-of-other-extensions-with-salted-user-password-hashes

但我不知道如何實現,在我自己的腳本。

+1

不要加密密碼!由於開發人員認爲他們需要解密密碼,因此現在無處不在......也不要使用MD5(),它已經被黑客入侵了。也看看這個問題http://stackoverflow.com/questions/401656/secure-hash-and-salt-for-php-passwords – 2012-07-25 09:20:27

回答

2

通過查看哈希提供我猜想saltedpasswords擴展(負責在數據庫中存儲鹽醃哈希)在TYPO3被設置爲使用phpass。因此,您應該能夠參加此課程並在腳本中使用它來創建/檢查密碼,就像TYPO3一樣。

或者是否有將密碼保存爲MD5的可能性?

是的,在TYPO3中使用鹽漬密碼是可選的,並非強制性的。但是,如果將來任何TYPO3安裝應該使用該數據庫,我不確定TYPO3如何處理混合記錄,當其中一些將密碼存儲爲無鹽哈希和一些鹽時。我的猜測是,它會優雅地處理它,認識到每個散列使用哪個檢查。

+0

你沒有在你的問題中解釋爲什麼TYPO3數據庫正在被使用,它是否已經包含一些記錄,以及將來它是否會被一些TYPO3安裝使用,所以我的答案可能不完全準確。 – tmt 2012-07-25 11:34:48

+0

數據庫僅用於前端用戶在其他網站上登錄以查看某些頁面。註冊等都在Typo3網站上處理。這就是爲什麼我只需要醃製密碼。就MD5而言,我可以直接在MD中放入MD5通道。登錄後,MD5會自動由Typo3轉換爲鹽漬密碼。 – 2012-07-25 11:49:18

+0

感謝cascaval,只是我需要以正確的方式指導我的答案。醃製密碼確實設置爲使用phpass。我在http://www.openwall.com/phpass下載了框架,並設法創建了散列,我可以與db中的散列進行比較。我需要設置'$ hash_portable = TRUE;'就是這樣。非常感謝你的幫助。 – 2012-07-25 12:50:31

7

看一看開發指南:

1.5.1 Creating a new salted user password hash from a given plain-text password

你必須在TYPO3,前端使用它:

$password = 'XXX'; // plain-text password 
$saltedPassword = ''; 

if (t3lib_extMgm::isLoaded('saltedpasswords')) { 
    if (tx_saltedpasswords_div::isUsageEnabled('FE')) { 
    $objSalt = tx_saltedpasswords_salts_factory::getSaltingInstance(NULL); 
    if (is_object($objSalt)) { 
     $saltedPassword = $objSalt->getHashedPassword($password); 
    } 
    } 
} 

,你不應該試圖生成鹽漬typo3以外的密碼,因爲加密取決於您的typo3設置。

+0

這就是事。我不想在Typo3前端使用它。 – 2012-07-25 09:32:03

13

文選TYPO3 6.X:

$password = 'XXX'; // plain-text password 
    $saltedPassword = ''; 

    if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('saltedpasswords')) { 
     if (\TYPO3\CMS\Saltedpasswords\Utility\SaltedPasswordsUtility::isUsageEnabled('FE')) { 
      $objSalt = \TYPO3\CMS\Saltedpasswords\Salt\SaltFactory::getSaltingInstance(NULL); 
      if (is_object($objSalt)) { 
       $saltedPassword = $objSalt->getHashedPassword($password); 
      } 
     } 
    }