在MySQL中,用戶登陸時(shí)使用的是明文密碼并不是很安全,因?yàn)檫@種方式有一個(gè)明顯的弱點(diǎn),那就是如果被黑客獲取了該數(shù)據(jù)庫(kù)中包含用戶的登錄信息,那么這些用戶的賬號(hào)密碼就會(huì)被暴露出來(lái),這是非常危險(xiǎn)的。為了避免這種情況的發(fā)生,我們可以修改MySQL用戶的登陸方式,不再使用明文密碼。
要實(shí)現(xiàn)這種修改,我們需要先了解MySQL的加密方式,因?yàn)镸ySQL的密碼是進(jìn)行了加密的。MySQL中的密碼加密方式是通過(guò)函數(shù)SHA1()和PASSWORD()實(shí)現(xiàn)的,SHA1()函數(shù)的作用是將明文密碼進(jìn)行SHA1加密,PASSWORD()函數(shù)的作用是將加密后的密碼再次進(jìn)行一次加密,這樣就可以實(shí)現(xiàn)MySQL密碼的加密。所以我們只需要在登陸時(shí)對(duì)用戶輸入的密碼進(jìn)行相應(yīng)的加密即可。下面是實(shí)現(xiàn)代碼:
//對(duì)密碼進(jìn)行加密 $password = sha1($_POST['password']); $password = 'PASSWORD("' . $password . '")'; //將加密后的密碼作為查詢條件進(jìn)行查詢 $sql = 'SELECT * FROM users WHERE email="' . $_POST['email'] . '" AND password=' . $password; $result = mysql_query($sql);
以上代碼中,我們首先對(duì)用戶輸入的密碼進(jìn)行了SHA1加密,然后將加密后的密碼使用PASSWORD()函數(shù)再次進(jìn)行加密,最后將加密后的密碼作為查詢條件進(jìn)行查詢。通過(guò)這種方式,我們就可以實(shí)現(xiàn)MySQL用戶登陸時(shí)不再使用明文密碼,因此也就提升了數(shù)據(jù)庫(kù)的安全性。