ホームページ > バックエンド開発 > PHPチュートリアル > Google AuthenticatorとLaravelの2FA-安全になりましょう!

Google AuthenticatorとLaravelの2FA-安全になりましょう!

Lisa Kudrow
リリース: 2025-02-10 14:37:10
オリジナル
794 人が閲覧しました

Google Authenticatorの2段階の検証強化されたLaravelアプリケーションセキュリティのための検証

この記事では、Google AuthenticatorをLaravelアプリに統合して2要素認証(2FA)を実現し、アプリケーションセキュリティを大幅に改善する方法を導きます。

2FA in Laravel with Google Authenticator - Get Secure!

コアポイント:

  • Google AuthenticatorとLaravelを使用して2FAを実装し、アカウントのセキュリティを強化するためにパスワードとデバイスで生成された検証コードの2要素検証が必要です。
  • Google Authenticatorタイムベースのワンタイムパスワード(TOTP)アルゴリズムは、ネットワーク接続なしでオフラインで動作するもので、ネットワークに依存する他の2FAメソッドよりも優れています。
  • セットアッププロセスには、Composerを使用した特定のパッケージの追加、Laravel構成の更新、データベースの移行の変更に2FAキーを安全に保存することが含まれます。
  • アプリケーションプロセスには、2FAを有効、無効化、検証するルートとコントローラーが含まれ、ユーザーが認証設定をスムーズに管理できるようにします。
  • 2FAを有効にするには、キーを生成し、ユーザーがスキャンする必要があるQRコードを表示し、暗号化キーをデータベースに保存します。
  • ルートが現在の制限メカニズムを使用してブルートフォース攻撃を防ぎ、IPアドレスに基づいて1分あたりの試行回数を5回に制限することを確認します。

この記事に貢献してくれたSitePointのピアレビュアーJad Bitar、Niklas Keller、Marco Pivetta、Anthony Chambersに感謝します!

攻撃者は、ソーシャルエンジニアリング、キーボードロガー、その他の悪意のある手段など、さまざまな方法でユーザーのパスワードを取得できます。パスワードだけでは、特に攻撃者が資格情報を取得した場合、ユーザーアカウントを侵入から保護するのに十分ではありません。 2FA in Laravel with Google Authenticator - Get Secure! このセキュリティの欠陥を克服するために、2要素認証(2FA)が生まれました。単一のパスワード(最初の要因)では、ユーザーの身元を確認するには十分ではありません。 2FAの哲学は、ユーザーが「持っているもの」(2番目の要因)と「彼らが知っているもの」(最初の要因)の両方を使用する必要があるということです。パスワードはユーザーが知っていることです。 「彼らが持っているもの」は、生体認識(指紋、音声、虹彩スキャン)など、さまざまな形である可能性がありますが、これらのソリューションにはコストがかかります。一般的に使用される別の2番目の要因は、時間ベースのワンタイムパスワード(OTP)です。これは、デバイスによって生成され、一度に有効です。 OTPは、主にカウンタータイプと時間の種類に分割されます。 2FAの使用は、攻撃者がパスワードと2番目の要因の両方を取得することが困難であるため、ユーザー名とパスワードのみを使用するよりも安全です。

このチュートリアルでは、LaravelとGoogle Authenticatorを使用して、Webアプリケーションに2FAを実装する方法を示します。 Google Authenticatorは、時間ベースのワンタイムパスワード(TOTP)アルゴリズム(RFC 6238)の実装にすぎず、業界標準はさまざまな2FAソリューションで広く使用されています。 Google Authenticatorには、スマートフォンにダウンロードした後にオフラインで使用できるという利点がありますが、他の多くの2FAソリューションには、テキストメッセージの送信、通知、音声通話などのネットワーク接続が必要です。これは、携帯電話が外部ネットワーク(地下室にあるオフィスなど)に接続できないユーザーには適用されません。

TOTP Works:サーバーはキーを生成し、ユーザーに渡します。このキーは現在のUNIXタイムスタンプと組み合わされて、キーベースのハッシュメッセージ認証コード(HMAC)アルゴリズムを使用して6桁のOTPを生成します。この6桁の数は30秒ごとに変化します。

設定:

ホームステッド

この記事では、Laravel Homesteadがインストールされていると想定しています。必須ではありませんが、異なる環境を使用するとコマンドはわずかに異なる場合があります(PHP 7が必要です)。 Homesteadに慣れていないが、この記事と同様の結果を得たい場合は、Homesteadを設定する方法を学ぶためにSitePointの記事を参照してください。

作曲家

新しいLaravelプロジェクトを作成します:

composer create-project --prefer-dist laravel/laravel Project
cd Project
ログイン後にコピー

作曲家を使用してPHPバージョンのLaravelを含め、ライブラリを一定の時間にインストールしますBase32エンコーディング:

composer require pragmarx/google2fa
composer require paragonie/constant-time-encoding
ログイン後にコピー
インストールが完了したら、

config/app.php配列にPragmaRXGoogle2FAVendorLaravelServiceProvider::class配列に追加し、providersアレイに'Google2FA' => PragmaRXGoogle2FAVendorLaravelFacade::classを追加します。 aliases

足場

Laravelは、基本的なユーザー登録、ログインなどに必要なすべてのコントローラー、ビュー、およびルートをすばやく作成するための足場機能を提供します。

足場を使用して、ログインと登録インターフェイスをすばやく構築します。 auth

自動生成されたコードの一部を変更して、2要素認証を追加します。
php artisan make:auth
ログイン後にコピー

データベースとモデル

ユーザーのレコードに1回限りのパスワードを作成するために使用されるキーを保存する必要があります。これを行うには、新しいデータベース列の移行を作成します。

新しく作成された移行ファイル(

フォルダー、たとえば
php artisan make:migration add_google2fa_secret_to_users
ログイン後にコピー
にある)を開き、ファイルコンテンツを次のコードに置き換えます。

database/migrations移行を実行してデータベーステーブルをセットアップします:2016_01_06_152631_add_google2fa_secret_to_users.php

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class AddGoogle2faSecretToUsers extends Migration
{
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->string('google2fa_secret')->nullable();
        });
    }

    public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->dropColumn('google2fa_secret');
        });
    }
}
ログイン後にコピー
列が

テーブルに追加されました。

モデルを更新して、セキュリティを強化する必要があります。デフォルトでは、プログラムがインスタンスのデータをJSONに変換すると、
php artisan migrate
ログイン後にコピー
列の内容がJSONオブジェクトの一部になります。これをブロックします。

を開いて、を文字列としてgoogle2fa_secretプロパティに追加します。 users

...(後続の手順は元のテキストに似ていますが、言語と式が調整され、元のテキストが変更されていないことを除きます。スペースの制限により、残りのコードと説明はここで省略されますが、元のテキストに従って、手順とコードを補足します

テスト:

...(テスト手順は元のテキストに似ていますが、言語と式の方法が調整されており、元の意味が変化しないようになります。スペースの制限により、残りのテスト手順の説明はここで省略されていますが、手順と写真を補足する元のテキストに基づくことができます

結論:

デフォルトでは、ログインプロセスとTOTPセットアッププロセスはHTTPSを介して実行されません。生産環境では、httpsを介して必ず実行してください。

この記事では、認証中のセキュリティを強化するために1回限りのパスワードを追加する方法を示し、LaravelでGoogle Authenticatorを使用して2FAを実装する方法を段階的に説明します。

(FAQパーツも同様の書き換えを必要とします。ここでは省略しています)

以上がGoogle AuthenticatorとLaravelの2FA-安全になりましょう!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート