Laravel - Security - Hashing (官方文件原子化翻譯筆記)

前言

學習一個框架, Ray 的想法是, 在深入理解底層實作的原理之前, 應該先知道這個框架的 使用方法; 先學習怎麼使用這個前人造的輪子, 再學習怎麼樣一個輪子。
所以本篇文章重點在於細讀官方文件, 並將內容理解後以 Q&A 的方式記錄下來, 加速學習以及查詢。



Configuration

Laravel Hashing 中, 支援使用哪三種算法來 hash password?
  1. Argon2i
  2. Argon2id
  3. Bcrypt


Basic Usage

以下的 Laravel example code 的意思是?
  • Example:

    <?php

    namespace App\Http\Controllers;

    use App\Http\Controllers\Controller;
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Hash;

    class UpdatePasswordController extends Controller
    {
    public function update(Request $request)
    {
    // Validate the new password length...

    $request->user()->fill([
    'password' => Hash::make($request->newPassword)
    ])->save();
    }
    }
  • Answer:
    取得登入的 User model, 並將 password attribute 替換成 hash 過的 newPassword, 然後儲存


Adjusting The Bcrypt Work Factor

以下的 Laravel example code 的意思是?
  • Example:

    <?php
    $hashed = Hash::make('password', [
    'rounds' => 12
    ]);
  • Answer:
    hash password, 並指定 iteration 次數


Adjusting The Argon2 Work Factor

以下的 Laravel example code 的意思是?
  • Example:

    <?php
    $hashed = Hash::make('password', [
    'memory' => 1024,
    'time' => 2,
    'threads' => 2,
    ]);
  • Answer:
    指定 Hash 時, memory 用量, time 以及 thread 數量


Verifying A Password Against A Hash

以下的 Laravel example code 的意思是?
  • Example:

    <?php
    if (Hash::check('plain-text', $hashedPassword)) {
    // The passwords match...
    }
  • Answer:
    使用 Hash::check, arg1 為尚未 hash 過的, arg2 為 hashed 過的, 比較是否一致


Checking If A Password Needs To Be Rehashed

以下的 Laravel example code 的意思是?
  • Example:

    <?php
    if (Hash::needsRehash($hashed)) {
    $hashed = Hash::make('plain-text');
    }
  • Answer:
    使用 Hash::needsRehash() 來確認 arg 是否與目前 Application 的 hash factor 一致, 若不一致則 return true

Laravel - Security - Password Reset (官方文件原子化翻譯筆記) Laravel - Security - Encryption (官方文件原子化翻譯筆記)

留言

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×