suchen
HeimPHP-FrameworkLaravelDatenverschlüsselung und -entschlüsselung in Laravel

Datenverschlüsselung und -entschlüsselung in Laravel

Dec 12, 2024 am 11:50 AM
laravelcadai敏感数据

Diese Anleitung erklärt, wie man die Verschlüsselung und Entschlüsselung sensibler Daten in Laravel-Modellen implementiert. Durch Ausführen der folgenden Schritte können Sie die Daten vor dem Speichern in der Datenbank schützen und beim Abrufen der Daten entschlüsseln.

Datenverschlüsselung und -entschlüsselung in Laravel

Voraussetzungen

  • Laravel: Stellen Sie sicher, dass Sie ein Laravel-Projekt verwenden.
  • Verschlüsselungsschlüssel: Laravel generiert automatisch APP_KEY in der .env-Datei. Dieser Schlüssel wird vom Verschlüsselungsdienst von Laravel verwendet.

Schritt 1: Verschlüsselung im Modell einrichten

Im Modell verwenden wir die Funktionen encrypt() und decrypt() von Laravel, um die Verschlüsselung und Entschlüsselung der angegebenen Felder automatisch durchzuführen.

Doctor-Modell

Erstellen oder aktualisieren Sie ein Doctor-Modell mithilfe von Verschlüsselungs- und Entschlüsselungsmethoden. Wir verschlüsseln Felder wie Vorname, Nachname, E-Mail und Mobiltelefon, bevor wir sie in der Datenbank speichern.

<?phpnamespace  AppModels;use IlluminateDatabaseEloquentModel;use IlluminateSupportFacadesCrypt;class Doctor extends Model{
    protected $fillable = [
        &#39;first_name&#39;, &#39;last_name&#39;, &#39;email&#39;, &#39;mobile&#39;, &#39;hashed_email&#39;, &#39;password&#39;
    ];

    // Automatically encrypt attributes when setting them
    public function setFirstNameAttribute($value)
    {
        $this->attributes['first_name'] = encrypt($value);
    }

    public function setLastNameAttribute($value)
    {
        $this->attributes['last_name'] = encrypt($value);
    }

    public function setEmailAttribute($value)
    {
        $this->attributes['email'] = encrypt($value);
    }

    public function setMobileAttribute($value)
    {
        $this->attributes['mobile'] = encrypt($value);
    }

    // Automatically decrypt attributes when getting them
    public function getFirstNameAttribute($value)
    {
        return decrypt($value);
    }

    public function getLastNameAttribute($value)
    {
        return decrypt($value);
    }

    public function getEmailAttribute($value)
    {
        return decrypt($value);
    }

    public function getMobileAttribute($value)
    {
        return decrypt($value);
    }}

Beschreibung

  • Setter-Methode: Verwenden Sie set{AttributeName }Attribute(), um die Daten zu verschlüsseln, bevor Sie sie in der Datenbank speichern.
  • Getter-Methode: Verwenden Sie get{AttributeName}Attribute() zum Entschlüsseln, wenn Sie Daten aus der Datenbank abrufen.

Schritt 2: Controller für Datenspeicherung und -abruf

Im Controller können Sie die Validierung durchführen und die Modelle aufrufen Verschlüsseln Sie Attribute direkt ohne zusätzliche Verschlüsselung/Entschlüsselung Schritt.

DoctorController

DoctorController übernimmt die Registrierung durch Validierung Geben Sie die Daten ein, verschlüsseln Sie sie über das Modell und speichern Sie sie in der Datenbank. Wenn Arztdaten erfasst werden, werden diese automatisch entschlüsselt Sensible Felder.

<?phpnamespace  AppHttpControllers;use IlluminateHttpRequest;use AppModelsDoctor;use IlluminateSupportFacadesHash;class DoctorController extends Controller{
    public function register(Request $request)
    {
        // Validate the incoming request
        $validatedData = $request->validate([
            'first_name' => 'required|string|max:255',
            'last_name' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:doctors,email',
            'mobile' => 'required|string|size:10|unique:doctors,mobile',
            'password' => 'required|string|min:8|confirmed',
        ]);

        // Hash the email to ensure uniqueness
        $hashedEmail = hash('sha256', $validatedData['email']);

        // Create a new doctor record (model will handle encryption)
        $doctor = Doctor::create([
            'first_name' => $validatedData['first_name'],
            'last_name' => $validatedData['last_name'],
            'email' => $validatedData['email'],
            'hashed_email' => $hashedEmail,
            'mobile' => $validatedData['mobile'],
            'password' => Hash::make($validatedData['password']),
        ]);

        return response()->json([
            'message' => 'Doctor registered successfully',
            'doctor' => $doctor
        ], 201);
    }

    public function show($id)
    {
        // Fetch the doctor record (model will decrypt the data automatically)
        $doctor = Doctor::findOrFail($id);

        return response()->json($doctor);
    }}

Beschreibung

  • Registrierungsmethode: Überprüfen Sie die eingehende Anfrage, erstellen Sie eine neue Arztakte und verschlüsseln Sie automatisch Felder wie Vorname, Nachname, E-Mail und Mobiltelefon basierend auf der Verschlüsselungsmethode des Modells.
  • Methode anzeigen: Arztakten nach ID abrufen. Das Sensible Felder werden vor der Getter-Methode des Modells automatisch entschlüsselt Daten zurückgeben.

Schritt 3: Datenbankkonfiguration

Stellen Sie sicher, dass die Arzttabellenspalten für sensible Daten lang genug sind, um verschlüsselte Daten zu verarbeiten (normalerweise TEXT oder LONGTEXT).

Beispiel für Migrationseinstellungen:

Schema::create('doctors', function (Blueprint $table) {
    $table->id();
    $table->text('first_name');
    $table->text('last_name');
    $table->text('email');
    $table->string('hashed_email')->unique(); // SHA-256 hashed email
    $table->text('mobile');
    $table->string('password');
    $table->timestamps();});

Hinweis: Da verschlüsselte Werte viel länger sein können als einfacher Text, wird Text für verschlüsselte Felder bevorzugt .

Schritt 4: Entschlüsselungsausnahmen behandeln

Um die Fehlerbehandlung zu verbessern, packen Sie die Entschlüsselungslogik in einen Try-Catch-Block im Modell-Getter:

<?phpnamespace  AppModels;use IlluminateDatabaseEloquentModel;use IlluminateSupportFacadesCrypt;class Doctor extends Model{
    protected $fillable = [
        &#39;first_name&#39;, &#39;last_name&#39;, &#39;email&#39;, &#39;mobile&#39;, &#39;hashed_email&#39;, &#39;password&#39;
    ];

    // Automatically encrypt attributes when setting them
    public function setFirstNameAttribute($value)
    {
        $this->attributes['first_name'] = encrypt($value);
    }

    public function setLastNameAttribute($value)
    {
        $this->attributes['last_name'] = encrypt($value);
    }

    public function setEmailAttribute($value)
    {
        $this->attributes['email'] = encrypt($value);
    }

    public function setMobileAttribute($value)
    {
        $this->attributes['mobile'] = encrypt($value);
    }

    // Automatically decrypt attributes when getting them
    public function getFirstNameAttribute($value)
    {
        return decrypt($value);
    }

    public function getLastNameAttribute($value)
    {
        return decrypt($value);
    }

    public function getEmailAttribute($value)
    {
        return decrypt($value);
    }

    public function getMobileAttribute($value)
    {
        return decrypt($value);
    }}

Zusätzliche Hinweise

  • Umweltsicherheit: Stellen Sie sicher, dass APP_KEY sicher in der .env-Datei gespeichert ist. Dieser Schlüssel ist für die Verschlüsselung/Entschlüsselung unerlässlich.
  • Datensicherung: Wenn die Datenintegrität von entscheidender Bedeutung ist, stellen Sie sicher, dass Sie über einen Sicherungsmechanismus verfügen, da verschlüsselte Daten ohne den richtigen APP_KEY nicht wiederhergestellt werden können.

Zusammenfassung

  1. Modellverschlüsselung: Verwenden Sie die Setter-Methode, um Daten vor der Speicherung zu verschlüsseln, und verwenden Sie die Getter-Methode, um sie beim Abruf zu entschlüsseln.
  2. Controller-Logik: Der Controller kann verschlüsselte Felder direkt ohne zusätzlichen Verschlüsselungscode verarbeiten.
  3. Datenbankkonfiguration: Verwenden Sie TEXT- oder LONGTEXT-Spalten als verschlüsselte Felder.
  4. Sicherheitshinweis: Sichern Sie Ihren APP_KEY und verwenden Sie die Ausnahmebehandlung im Getter, um Entschlüsselungsfehler zu behandeln.

Das obige ist der detaillierte Inhalt vonDatenverschlüsselung und -entschlüsselung in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Mastering Laravel Soft Deletes: Best Practices und fortschrittliche TechnikenMastering Laravel Soft Deletes: Best Practices und fortschrittliche TechnikenMay 08, 2025 am 12:25 AM

LaravelsoftDeletSallow "Deletion" mit OutremoveVeringRecordsFromThedatabase.ToImplement: 1) UsethesoftDeletESTRAITYOURModel

Laravel Soft Deletes: Wiederherstellung und dauerhaft löschen DatensätzeLaravel Soft Deletes: Wiederherstellung und dauerhaft löschen DatensätzeMay 08, 2025 am 12:24 AM

Stellen Sie in Laravel die Soft Deleted Records mithilfe der Methode restore () wieder her und löschen Sie die methode (forcedelete () dauerhaft. 1) Verwenden Sie withtrashed ()-> find ()-> restore (), um einen einzelnen Datensatz wiederherzustellen, und verwenden Sie nur übertrash ()-> restore (), um einen einzelnen Datensatz wiederherzustellen. 2) Löschen Sie einen einzelnen Datensatz dauerhaft mit withTrashed ()-> find ()-> ercuselete (), und mehrere Datensätze verwenden nur übertrash ()-> ercuselete ().

Die aktuelle Laravel -Veröffentlichung: Download und Upgrade noch heute!Die aktuelle Laravel -Veröffentlichung: Download und Upgrade noch heute!May 08, 2025 am 12:22 AM

Sie sollten die neueste Laravel -Version herunterladen und ein Upgrade durchführen, da sie verbesserte Eloquentorm -Funktionen und neue Routing -Funktionen bietet, die die Anwendungseffizienz und -sicherheit verbessern können. Befolgen Sie die folgenden Schritte: 1. Sicherung der aktuellen Anwendung, 2. Aktualisieren Sie die Datei composer.json in der neuesten Version, 3. Führen Sie den Befehl Update aus. Während einige häufige Probleme auftreten können, wie z. B. verworfene Funktionen und Paketkompatibilität, können diese Probleme durch Referenzdokumentation und Unterstützung der Community gelöst werden.

Laravel: Wann sollte ich auf die letzte Version aktualisieren?Laravel: Wann sollte ich auf die letzte Version aktualisieren?May 08, 2025 am 12:18 AM

YoShouldupdatetothelatestlaravelversionWhentHEBenefitsClearlyoutWEIGHTHECOSTs.1) newFeaturesandimprovementsCanenHanceYourApplication.2) SecurityUpdatesArecricialifvulnerabilitiesAraddressed.3) PerformanceGainsMayitifDateifyificialAppstruggles.4)

Laravel Soft Delete: So verhindern Sie einen dauerhaften DatenverlustLaravel Soft Delete: So verhindern Sie einen dauerhaften DatenverlustMay 08, 2025 am 12:04 AM

Laravel'SsoftDeletefeatureCanBeUsedectelToSafeguardDatabyFolepecificstepsandbestpractices.1) implementiertDeletSusingthesoftDelettraitinyourModel.2) UsewithTrashed () toquerySoft-DeletioRecordsforaudRectoreditorditorditorteditorditorditorditorteditortedresorrecovery.3)

Laravel Version Tracker: Kennen Sie immer die neueste VersionLaravel Version Tracker: Kennen Sie immer die neueste VersionMay 07, 2025 pm 06:25 PM

Entwickler können neue Versionen von Laravel effizient verfolgen und die neuesten und sichersten Codebasis sicherstellen: 1. Verwenden Sie Code -Snippets, um die neueste Version zu überprüfen und sie mit der aktuellen Version zu vergleichen.

Laravel letzte Version: SicherheitsupdatesLaravel letzte Version: SicherheitsupdatesMay 07, 2025 pm 05:25 PM

Die neueste Version (9.x) von Laravel bringt wichtige Sicherheitsaktualisierungen mit: 1) Patching bekannte Schwachstellen wie CSRF -Angriffe; 2) Verbesserung der Gesamtsicherheit wie CSRF -Schutz und SQL -Injektionsabwehr. Wenn Sie diese Updates korrekt verstehen und anwenden, können Sie sicherstellen, dass Ihre Laravel -App immer im sichersten Zustand ist.

Der ultimative Leitfaden für Laravel -Migrationen: DatenbankstrukturverwaltungDer ultimative Leitfaden für Laravel -Migrationen: DatenbankstrukturverwaltungMay 07, 2025 pm 05:05 PM

LaravelMigrationsAreversionControlfordatabasen, erlaubteSchemamanagementandevolution.1) HELPMAINTAMTEAMSYNCANDCONSISTENCYACROSSENVICONMENTS.2) UsethemtocreatetablesLikethe'users'table -Dahnyfields.3) modifizierten existierenden ByaddingFields -ähnlichen

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor