1
我正在研究需要連接到遠程數據庫進行身份驗證的CakePHP應用程序。密碼與MD5加密存儲在一起,當我編寫應用程序時,我對我的本地主機數據庫使用了sha加密,現在應用程序不允許我登錄,因爲架構不同。我如何強制cakePHP使用MD5驗證用戶?CakePHP - 使用MD5進行身份驗證
我正在研究需要連接到遠程數據庫進行身份驗證的CakePHP應用程序。密碼與MD5加密存儲在一起,當我編寫應用程序時,我對我的本地主機數據庫使用了sha加密,現在應用程序不允許我登錄,因爲架構不同。我如何強制cakePHP使用MD5驗證用戶?CakePHP - 使用MD5進行身份驗證
參考從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);
它絕對需要在MD5中嗎?它被認爲是密碼破解的http://en.wikipedia.org/wiki/MD5 – Nunser
你也可以使用純文本。 – Mihai
我知道MD5並不推薦,但是舊系統在2年前就已經實現了...現在我需要應付它,直到我改變了從MD5哈希算起的一切...... –