亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

watak

每個人在建構(gòu) PHP 應用時終究都會加入用戶登錄的模塊。用戶的帳號及密碼會被儲存在數(shù)據(jù)庫中,在登錄時用來驗證用戶。

在存儲密碼前正確的 哈希密碼 是非常重要的。密碼的哈希操作是單向不可逆的,該哈希值是一段固定長度的字符串且無法逆向推算出原始密碼。這就代表你可以哈希另一串密碼,來比較兩者是否是同一個密碼,但又無需知道原始的密碼。如果你不將密碼哈希,那么當未授權的第三者進入你的數(shù)據(jù)庫時,所有用戶的帳號資料將會一覽無遺。有些用戶可能(很不幸的)在別的網(wǎng)站也使用相同的密碼。所以務必要重視數(shù)據(jù)安全的問題。

密碼應該單獨被 加鹽處理 ,加鹽值指的是在哈希之前先加入隨機子串。以此來防范「字典破解」或者「彩虹碰撞」(一個可以保存了通用哈希后的密碼數(shù)據(jù)庫,可用來逆向推出密碼)。

哈希和加鹽非常重要,因為很多情況下,用戶會在不同的服務中選擇使用同一個密碼,密碼的安全性很低。

值得慶幸的是,現(xiàn)在在 PHP 中這些很容易做到。

使用 password_hash 來哈希密碼

password_hash 函數(shù)在 PHP 5.5 時被引入。 此函數(shù)現(xiàn)在使用的是目前 PHP 所支持的最強大的加密算法 BCrypt 。 當然,此函數(shù)未來會支持更多的加密算法。 password_compat 庫的出現(xiàn)是為了提供對 PHP >= 5.3.7 版本的支持。

在下面例子中,我們哈希一個字符串,然后和新的哈希值對比。因為我們使用的兩個字符串是不同的(’secret-password’ 與 ‘bad-password’),所以登錄失敗。

<?php 
    require 'password.php'; 
    $passwordHash = password_hash('secret-password', PASSWORD_DEFAULT); 
    if (password_verify('bad-password', $passwordHash)) {     
        // Correct Password 
    } else {    
         // Wrong password 
         }

password_hash() 已經(jīng)幫你處理好了加鹽。加進去的隨機子串通過加密算法自動保存著,成為哈希的一部分。password_verify() 會把隨機子串從中提取,所以你不必使用另一個數(shù)據(jù)庫來記錄這些隨機子串。


Artikel sebelumnya: Artikel seterusnya: