2014-04-30 180 views
1

我正在研究需要連接到遠程數據庫進行身份驗證的CakePHP應用程序。密碼與MD5加密存儲在一起,當我編寫應用程序時,我對我的本地主機數據庫使用了sha加密,現在應用程序不允許我登錄,因爲架構不同。我如何強制cakePHP使用MD5驗證用戶?CakePHP - 使用MD5進行身份驗證

+3

它絕對需要在MD5中嗎?它被認爲是密碼破解的http://en.wikipedia.org/wiki/MD5 – Nunser

+3

你也可以使用純文本。 – Mihai

+0

我知道MD5並不推薦,但是舊系統在2年前就已經實現了...現在我需要應付它,直到我改變了從MD5哈希算起的一切...... –

回答

1

參考從here

採取我不建議使用這種代碼,在任何情況下,永遠。 MD5對於安全性來說是一種可怕的哈希算法,因爲它的資源太輕而不能防止破解。它也有已知的漏洞。使用bcrypt或SHA-512。

要做到這一點,您可以編輯AppController.php這樣的:

<?php 
// AppController.php 

public function beforeFilter() 
{ 
    Security::setHash('md5'); 
} 
?> 

然而,這不推薦MD5是一個非常糟糕的口令散列算法。添加一個函數允許用戶使用現有的md5密碼進行登錄,鼓勵他們升級到新的散列,並且不允許任何新用戶設置MD5密碼。

相反如果你想使用一個安全的功能像bcrypt,你可以做到以下幾點:

<?php 
// AppController.php 

public function beforeFilter() 
{ 
    Security::setHash('blowfish'); 
} 
?> 

當比較明文值的散列,您必須將原來的哈希值傳遞作爲以鹽值保留成本參數等:

$newHash = Security::hash($newPassword, 'blowfish', $storedPassword);