iT邦幫忙

2022 iThome 鐵人賽

DAY 13
0
自我挑戰組

學框架永不嫌晚,從現在開始學Laravel你也可以系列 第 13

Day 13 Laravel基礎功 - 安全性

  • 分享至 

  • xImage
  •  

以下介紹一些Laravel內部已建置,好用的安全性方法

加密

Laravel 的加密服務提供一個簡單且方便的介面,可讓我們通過 OpenSSL 使用 AES-256 或 AES-128 加密方法來加解密文字。Laravel 中所有的加密資訊都使用訊息驗證碼 (MAC, Message Authentication Code) 簽名,因此一旦經過加密,底層的值將無法被修改或竄改。


<?php
 
    namespace App\Http\Controllers;

    use App\Http\Controllers\Controller;
    use App\Models\User;
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Crypt;

    class DigitalOceanTokenController extends Controller
    {
        public function storeSecret(Request $request)
        {
            //將使用者傳過來的請求增加一個名為token的key,並儲存當中被加密的token在值當中
            
            $request->user()->fill([
                'token' => Crypt::encryptString($request->token),
            ])->save();
            
            //將加密的token解密
            Crypt::decryptString($encryptedValue);
        }
    }
?>

雜湊

Laravel的Facades中的hash提供了安全的Bcrypt與Argon2雜湊,用以儲存使用者密碼。

<?php
// 預設使用Bcrypt
Hash::make($request->newPassword);
//  使用Bcrypt雜湊 設定salt的部分
Hash::make('password', ['rounds' => 12]);
//  使用Argon2雜湊
Hash::make('password', ['memory' => 1024,'time' => 2,'threads' => 2]);
// 驗證密碼是否符合雜湊
Hash::check('plain-text', $hashedPassword);
// 判斷密碼是否需要重新雜湊
Hash::needsRehash($hashed);

?>

資料來源:
https://docs.cornch.dev/zh-tw/laravel/9.x/encryption
https://docs.cornch.dev/zh-tw/laravel/9.x/hashing


上一篇
Day 12 Laravel基礎功 - 資料表的關聯
下一篇
Day 14 改變一下方向....
系列文
學框架永不嫌晚,從現在開始學Laravel你也可以14
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言