php 儲存使用者密碼新玩法程式碼

來源:互聯網
上載者:User

相信很多人要麼是md5()直接存入庫或者儲存md5()和salt兩個欄位。但第一種不安全。第二種麻煩。好在php提供了更簡單的解決方案。

註:以下的前提條件是在php5.5版本中的

在php5.5以後,可以換一種存法了。簡單方便。

<?php
$pwd = "123456";
$hash = password_hash($pwd, PASSWORD_BCRYPT);
echo $hash;

// mysql中就只需要儲存這個hash值就行了。建議把資料庫該欄位值設定為255

if (password_verify($pwd, '資料庫中的hash值')) {
    echo "密碼正確";
} else { 
    echo "密碼錯誤";
}
看到這時,可能有些人說tm以前我存密碼只是單獨存了一個md5的password,也沒有用salt,現在我想改成你這種,可怎麼辦好呢。

參考stackoverflow中的這個文章,也許對你有協助。

http://stackoverflow.com/questions/18906660/converting-md5-password-hashes-to-php-5-5-password-hash

 

$password = $_POST["password"];

// TODO 這裡要判斷一下這個密碼是否是正確密碼
// 然後再決定更新

if (substr($pwInDatabase, 0, 1) == "$")
{
    // Password already converted, verify using password_verify
}
else
{
    // User still using the old MD5, update it!

    if (md5($password) == $pwInDatabase)
    {
        $db->storePw(password_hash($password));
    }
}


不推薦圖中這種做法,因為double hash不會增加安全性。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.