Laravel 9.x ハッシュ

イントロダクション

LaravelのHashファサードは、ユーザーパスワードを保存するための安全なBcryptおよびArgon2ハッシュを提供します。Laravelアプリケーションスターターキットのいずれかを使用している場合、デフォルトで登録と認証にBcryptが使用されます。

Bcryptは、その「作業係数」が調整可能であるため、パスワードのハッシュに最適です。つまり、ハードウェアの能力が上がると、ハッシュの生成にかかる時間が長くなる可能性があります。パスワードをハッシュする場合は、遅いのが利点です。アルゴリズムがパスワードをハッシュするのに時間がかかるほど、悪意のあるユーザーがアプリケーションに対するブルートフォース攻撃で使用される可能性のあるすべての文字列ハッシュ値の「レインボーテーブル」を生成するのにかかる時間が長くなります。

設定

アプリケーションのデフォルトのハッシュドライバは、アプリケーションのconfig/hashing.php設定ファイルで設定されます。現在サポートしているドライバはいくつかあります:BcryptおよびArgon2(Argon2iおよびArgon2idバリアント)です。

基本的な使用法

パスワードのハッシュ

Hashファサードでmakeメソッドを呼び出すことにより、パスワードをハッシュすることができます。

<?php

namespace App\Http\Controllers;

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

class PasswordController extends Controller
{
    /**
     * ユーザーのパスワードを更新
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request)
    {
        // 新しいパスワードの長さをバリデート…

        $request->user()->fill([
            'password' => Hash::make($request->newPassword)
        ])->save();
    }
}

Bcryptの作業係数の調整

Bcryptアルゴリズムを使用している場合、makeメソッドを使用すると、roundsオプションを使用してアルゴリズムの作業係数を管理できます。ただし、Laravelが管理するデフォルトの作業係数は、ほとんどのアプリケーションで適切でしょう。

$hashed = Hash::make('password', [
    'rounds' => 12,
]);

Argon2作業係数の調整

Argon2アルゴリズムを使用している場合、makeメソッドを使用すると、memorytimethreadsオプションを使用してアルゴリズムの作業要素を管理できます。ただし、Laravelが管理するデフォルト値は、ほとんどのアプリケーションで適切でしょう。

$hashed = Hash::make('password', [
    'memory' => 1024,
    'time' => 2,
    'threads' => 2,
]);

Tip!! これらのオプションの詳細には、Argonハッシュに関するPHP公式ドキュメントを参照してください。

パスワードがハッシュと一致するかの確認

Hashファサードが提供するcheckメソッドを使用すると、指定するプレーンテキスト文字列が指定するハッシュに対応することを確認できます。

if (Hash::check('plain-text', $hashedPassword)) {
    // パスワードが一致
}

パスワードを再ハッシュする必要があるかの判断

Hashファサードが提供するneedsRehashメソッドを使用すると、パスワードがハッシュされてから、ハッシャーによって使用される作業要素が変更されたかどうかを判別できます。一部のアプリケーションは、アプリケーションの認証プロセス中にこのチェックを実行することを選択しています。

if (Hash::needsRehash($hashed)) {
    $hashed = Hash::make('plain-text');
}

ドキュメント章別ページ

ヘッダー項目移動

注目:アイコン:ページ内リンク設置(リンクがないヘッダーへの移動では、リンクがある以前のヘッダーのハッシュをURLへ付加します。

移動

クリックで即時移動します。

設定

適用ボタンクリック後に、全項目まとめて適用されます。

カラーテーマ
和文指定 Pagination
和文指定 Scaffold
Largeスクリーン表示幅
インデント
本文フォント
コードフォント
フォント適用確認

フォントの指定フィールドから、フォーカスが外れると、当ブロックの内容に反映されます。EnglishのDisplayもPreviewしてください。

フォント設定時、表示に不具合が出た場合、当サイトのクッキーを削除してください。

バックスラッシュを含むインライン\Code\Blockの例です。

以下はコードブロックの例です。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * ユーザに関連する電話レコードを取得
     */
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}

設定を保存する前に、表示が乱れないか必ず確認してください。CSSによるフォントファミリー指定の知識がない場合は、フォントを変更しないほうが良いでしょう。

キーボード・ショートカット

オープン操作

PDC

ページ(章)移動の左オフキャンバスオープン

HA

ヘッダー移動モーダルオープン

MS

移動/設定の右オフキャンバスオープン

ヘッダー移動

T

最初のヘッダーへ移動

E

最後のヘッダーへ移動

NJ

次ヘッダー(H2〜H4)へ移動

BK

前ヘッダー(H2〜H4)へ移動

その他

?

このヘルプページ表示
閉じる