iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 16
1

前言

開始前可以先看一下這篇,理解一下什麼是明碼、為什麼資料庫內不能存明碼。

[資訊安全] 密碼存明碼,怎麼不直接去裸奔算了?淺談 Hash , 用雜湊保護密碼

實作雜湊

$password = '1111'; //假設使用者輸入的密(明)碼是 1111
$password_hash = password_hash($password, PASSWORD_DEFAULT); //將明碼雜湊

這時候如果印出$password_hash,會得到一串像亂碼的東西!
類似這樣:$2y$10$yWSkKzzapRl22zjh67vE3.KxaR1lvMjsYToc5jKnAWfVadLa8jYUe
所以把這樣的$password_hash存進資料庫就行了~

除了PASSWORD_DEFAULT,這個函式也提供其他選項,有興趣可以去這裡看看:

password_hash

實作驗證

使用php裡提供的password_verify()來做登入時密碼的驗證。
$password是使用者登入時輸入的明碼,
$password_hash是存在資料庫裡經過雜湊的密碼(上面那串)。

if (password_verify($password, $password_hash)) {
    echo '密碼正確';
} else {
    echo '密碼錯誤';
}

結語

password_hash()加密,用password_verify()驗證。

password_hash():https://www.php.net/manual/en/function.password-hash.php

password_verify():https://www.php.net/manual/en/function.password-verify.php


上一篇
打包和拆開:PHP的compact和extract
下一篇
Laravel資料庫:fillable & guarded
系列文
網頁後端的30件小事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言