In diesem Artikel wird Sie anhelfen, wie Sie Google Authenticator in Ihre Laravel-App integrieren, um die Zwei-Faktor-Authentifizierung (2FA) zu erreichen, wodurch die Anwendungssicherheit erheblich verbessert wird.
Kernpunkte:
Dank an SitePoint Peer Reviewer Jad Bitar, Niklas Keller, Marco Pivetta und Anthony Chambers für ihren Beitrag zu diesem Artikel!
Angreifer können Benutzerkennwörter auf verschiedene Arten erhalten, wie z. B. Social Engineering, Tastaturprotokoller oder andere böswillige Mittel. Allein Kennwörter reichen nicht aus, um Benutzerkonten vor Eindringen zu schützen, insbesondere wenn Angreifer Anmeldeinformationen erhalten haben.
Um diesen Sicherheitsfehler zu überwinden, entstand die Zwei-Faktor-Authentifizierung (2FA). Ein einzelnes Passwort (erster Faktor) reicht nicht aus, um die Identität des Benutzers zu überprüfen. Die Philosophie von 2FA ist, dass Benutzer sowohl "das, was sie haben" (den zweiten Faktor) als auch „das, was sie kennen“ (der erste Faktor) verwenden müssen. Passwörter wissen, was Benutzer wissen. "Was sie haben" kann in vielen Formen sein, wie z. B. biometrische Erkennung (Fingerabdruck, Sprache, Iris -Scannen), aber diese Lösungen sind teuer. Ein weiterer häufig verwendeter zweiter Faktor ist das zeitbasierte einmalige Kennwort (OTP), das vom Gerät generiert und gleichzeitig gültig ist. OTP ist hauptsächlich in den Typ und Zeittyp des Zählers unterteilt. Die Verwendung von 2FA ist sicherer als nur Benutzername und Passwort zu verwenden, da es für einen Angreifer schwierig ist, sowohl Passwörter als auch den zweiten Faktor zu erhalten.
Mit diesem Tutorial wird Laravel und Google Authenticator verwendet, um zu demonstrieren, wie 2FA in einer Webanwendung implementiert werden kann. Google Authenticator ist nur eine Implementierung des TOTP-Algorithmus (Time-Based One-Time One-Time Pitch) (RFC 6238), und der Branchenstandard wird in einer Vielzahl von 2FA-Lösungen häufig verwendet. Google Authenticator hat einige Vorteile, dass er nach dem Herunterladen auf ein Smartphone offline verwendet werden kann, während viele andere 2FA -Lösungen eine Netzwerkverbindung erfordern, z. B. Senden von Textnachrichten, Drücken von Benachrichtigungen oder Sprachanrufen. Dies gilt nicht für Benutzer, deren Telefone möglicherweise keine Verbindung zu externen Netzwerken herstellen können (z. B. Büros in Kellern).
TOTP arbeitet nach: Der Server generiert einen Schlüssel und gibt ihn an den Benutzer weiter. Dieser Schlüssel wird mit dem aktuellen UNIX-Zeitstempel kombiniert, um einen sechsstelligen OTP mit dem HMAC-Algorithmus (Key-Based Hash Message Authentication Code) zu generieren. Diese sechsstellige Zahl ändert sich alle 30 Sekunden.
Einstellungen:
In diesem Artikel geht davon aus, dass Laravel Homestead installiert ist. Obwohl nicht erforderlich, sind die Befehle möglicherweise geringfügig unterschiedlich, wenn Sie eine andere Umgebung verwenden (erfordert Php 7). Wenn Sie mit Homestead nicht vertraut sind, aber ähnliche Ergebnisse in diesem Artikel erzielen möchten, finden Sie im SitePoint -Artikel, um zu erfahren, wie Sie Homestead festlegen.
Erstellen Sie ein neues Laravel -Projekt:
composer create-project --prefer-dist laravel/laravel Project cd Project
Verwenden Sie den Komponisten, um die PHP -Version von Laravel einzuschließen und eine Bibliothek für konstante Zeit Base32 Codierung zu installieren:
composer require pragmarx/google2fa composer require paragonie/constant-time-encoding
Nach Abschluss der Installation fügen Sie config/app.php
zum PragmaRXGoogle2FAVendorLaravelServiceProvider::class
-Array in providers
hinzu und fügen Sie 'Google2FA' => PragmaRXGoogle2FAVendorLaravelFacade::class
zum aliases
-Array hinzu.
Laravel bietet Gerüstfunktionen, um schnell alle Controller, Ansichten und Routen zu erstellen, die für die grundlegende Registrierung, Anmeldung und vieles mehr erforderlich sind. Wir werden auth
Gerüst verwenden, um die Anmelde- und Registrierungsschnittstelle schnell zu erstellen:
php artisan make:auth
Wir werden einen Teil des automatisch generierten Codes ändern, um die Zwei-Faktor-Authentifizierung hinzuzufügen.
Wir müssen den Schlüssel speichern, der zum Erstellen eines einmaligen Kennworts im Benutzerdatensatz verwendet wird. Erstellen Sie dazu eine neue Datenbankspaltenmigration:
php artisan make:migration add_google2fa_secret_to_users
Öffnen Sie die neu erstellte Migrationsdatei (im Ordner database/migrations
, z. B. 2016_01_06_152631_add_google2fa_secret_to_users.php
) und ersetzen Sie den Dateiinhalt durch den folgenden Code:
<?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'); }); } }
Führen Sie die Migration aus, um die Datenbanktabelle einzurichten:
php artisan migrate
Jetzt wurde die Spalte google2fa_secret
in die Tabelle users
hinzugefügt. Wir sollten das AppUser
-Modell für die erweiterte Sicherheit aktualisieren. Wenn das Programm standardmäßig die Daten der AppUser
-Instanz in JSON konvertiert, wird der Inhalt der Spalte google2fa_secret
Teil des JSON -Objekts. Wir werden das blockieren. Öffnen Sie die app/User.php
und fügen Sie google2fa_secret
als Zeichenfolge zur hidden
-Fahrung hinzu.
... (Die nachfolgenden Schritte ähneln dem Originaltext, mit der Ausnahme, dass die Sprache und der Ausdruck angepasst werden, wobei der ursprüngliche Text unverändert bleibt. Aufgrund von Platzbeschränkungen werden die verbleibenden Code und Beschreibungen hier weggelassen, aber sie können sie können Nach dem Originaltext die Schritte und den Code ergänzen
testen:
... (Die Testschritte ähneln dem ursprünglichen Text, mit der Ausnahme, dass die Sprach- und Ausdrucksmethoden angepasst wurden, wobei die ursprüngliche Bedeutung unverändert bleibt. Aufgrund von Platzbeschränkungen werden die verbleibenden Testschritte hier weggelassen, aber sie kann auf dem ursprünglichen Text basieren, ergänzen die Schritte und BilderSchlussfolgerung:
Standardmäßig werden der Anmeldungsprozess und der TOTP -Setup -Prozess nicht über HTTPS durchgeführt. Stellen Sie in Produktionsumgebungen sicher, dass Sie dies über HTTPS tun.
Dieser Artikel zeigt, wie ein einmaliges Kennwort hinzugefügt wird, um die Sicherheit während der Authentifizierung zu verbessern, und erläutert Schritt für Schritt, wie 2FA mit Google Authenticator in Laravel implementiert wird.
(Das FAQ -Teil erfordert auch eine ähnliche Umschreibung, die hier weggelassen wird)
Das obige ist der detaillierte Inhalt von2FA in Laravel mit Google Authenticator - Holen Sie sich sicher!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!