自分だけのクイズ作成 - Quipha公開中

【Laravel Breeze】ログインの失敗回数・ロック時間の変更

Laravel
スポンサーリンク

はじめに

Laravelの認証機能のBreezeは、簡単に導入することができます。
Breezeはセキュリティ対策の一環として、ログインに連続で失敗した場合に、ログインを一定時間できなくなる仕組みが導入されています。

今回は、その回数やロック時間を変更する手順をまとめました。

Laravelの構築方法は以下をご覧ください。

また、Laravelの認証機能の導入 (Breeze)は以下をご覧ください。

使用するバージョン
  • Laravel Framework 8.69.0

Quipha

個人開発ですがQuiphaというサービスを開発しました。
Webアプリケーションであり、Laravelで作成しました。認証機能も導入しています。

良かったら、会員登録して動作を試してみて下さい。

ログイン失敗回数の変更

ログイン画面にアクセスします。

Emailアドレスを入力し、パスワードを何度も間違えてログインを行います。
デフォルトで、5回ログインに失敗すると、1分間ロックがかかり、ログインができなくなります。

不正にアクセスする悪意のあるユーザは、ブルートフォースアタック(総当たり攻撃)を行う可能性があり、この対策は効果的です。

この回数を変更するには、以下のファイルを修正します。

app\Http\Requests\Auth\LoginRequest.php

tooManyAttemptsの第二引数の値を変更します。(デフォルトで5が指定されている)

    public function ensureIsNotRateLimited()
    {
        if (!RateLimiter::tooManyAttempts($this->throttleKey(), 5)) {
            return;
        }

例えば、この数値を3に変更すると、三回失敗した後にログインのロックがかかります。

ログインの回数制限は、ユーザーのメールアドレスとIPアドレスの組み合わせごとに制限されます。

ログインロック時間の変更

ログインのロックがかかった後に、ロックされる時間については、デフォルトで1分です。

1分経つと、またログインを行うことができます。

この時間を変更するには、以下のファイルを修正します。

app\Http\Requests\Auth\LoginRequest.php

以下のコードを確認します。

    public function authenticate()
    {
        $this->ensureIsNotRateLimited();

        if (!Auth::attempt($this->only('email', 'password'), $this->boolean('remember'))) {
            RateLimiter::hit($this->throttleKey());

RateLimiter::hitの第二引数に、時間(秒)を指定します。
(10分を指定する例)

RateLimiter::hit($this->throttleKey(), 600);

ログインロックの時間が変更されました。

ログインロック時間を表示しない

ログインのロック時に、「残り何秒」という表示をしたくない場合は、以下のファイルを変更します。

resources\lang\en\auth.php

以下のコードを確認します。

'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',

以下のように修正しました。

'throttle' => 'Too many login attempts.',

修正後、残り秒数が表示されなくなりました。

さいごに

LaravelのBreezeは、簡単に認証の仕組みを導入でき、カスタマイズも楽ですので、是非試してみてください。

コメント

タイトルとURLをコピーしました