對不起,這可能是愚蠢的,但有一些我不明白關於Phpass。如果我能創造一個安全的哈希密碼是這樣的:Phpass - 無法訪問所有密碼的危險?
$pwdHasher = new PasswordHash(8, FALSE);
$hash = $pwdHasher->HashPassword($password);
,後來檢查是這樣的:
$checked = $pwdHasher->CheckPassword($password, $hash);
那麼這意味着,在邏輯上的密碼必須存放在這樣一種方式,他們只能在特定的機器上閱讀(否則有人可以使用另一臺機器上的「CheckPassword」功能獲取密碼)。 Phpass如何做到這一點?
如果將來需要將網站移動到新的服務器,這不會導致問題嗎?如何安全備份我的數據庫,以便在發生重大服務器故障時,我可以恢復所有密碼? (我是否錯過了一些明顯的東西?)
編輯 - 針對下面的註釋,如果不同的機器不影響它,那麼如果黑客訪問我的數據庫,爲什麼他們不能在他們自己的機器上執行CheckPassword獲取原始密碼?對不起,我一定錯過了一些明顯的東西。
編輯2 - 該死的,我錯過了一些明顯的東西。比較函數只檢查給定的密碼和散列函數的密碼,並返回true或false - 你實際上不必親自訪問密碼。爲愚蠢而道歉!
不同的機器不會影響任何東西。 – Ibu
機器爲什麼會影響它? –
CheckPassword不會*返回原始密碼。 CheckPassword只是檢查傳入的密碼是否散列到傳入的散列。如果是,則返回'true',否則返回'false'。 –