PHP - Password_Hash密碼雜湊API - 筆記長也

PHP - Password_Hash密碼雜湊API

2018-06-09 01:35:44   PHP

為何需要雜湊密碼

密碼若以明文的形式儲存在資料庫當中,當應用程式產生漏洞而導致資料庫注入攻擊將可能導致密碼外洩,故以雜湊後的雜湊值儲存是安全的,此外也能避免網站被懷疑洩漏密碼。

從PHP5.5.0開始內建了密碼HASH的API,讓密碼雜湊變得相當容易,新的算法也比MD5、SHA1來得安全。

產生雜湊值:password_hash

這個函式共有三個引數,第一個為原始密碼,第二個是雜湊的算法(預設是bcrypt),第三個是算法的工作係數(強度,留空預設為10)

password_hash("hgjfia", PASSWORD_DEFAULT)

驗證雜湊值:password_verity

PHP提供的API也提供驗證,這樣使開發者很容易設計使用者登入表單。

if(password_verify($password, $user->pw))
  //登入
else
  //密碼錯誤

重新雜湊:password_needs_rehash

這個函式可以檢查目前的雜湊值是否為最新的,第一個引數為密碼雜湊值,第二個為使用的算法,第三個為工作係數

password_needs_rehash($user->pw, PASSWORD_DEFAULT, 12)

如果之前被雜湊的密碼僅使用10的預設工作係數,這個函式將會重新雜湊工作係數為12的雜湊值。

關於作者


長也

在學校上班的工程師,嘗試成為網頁全端工程師(laravel / React),技能樹成長中,閒暇之餘就寫一些筆記,平常沒事就會出沒運動中心跑步跟錄錄 Podcast。