Datenverschlüsselung und -entschlüsselung in Laravel
Dec 12, 2024 am 11:50 AMDiese 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.
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 = [ 'first_name', 'last_name', 'email', 'mobile', 'hashed_email', 'password' ]; // 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 = [ 'first_name', 'last_name', 'email', 'mobile', 'hashed_email', 'password' ]; // 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
- 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.
- Controller-Logik: Der Controller kann verschlüsselte Felder direkt ohne zus?tzlichen Verschlüsselungscode verarbeiten.
- Datenbankkonfiguration: Verwenden Sie TEXT- oder LONGTEXT-Spalten als verschlüsselte Felder.
- 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!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

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

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ethereum ist eine dezentrale Anwendungsplattform, die auf intelligenten Vertr?gen basiert, und seine native Token -ETH kann auf verschiedene Weise erhalten werden. 1. Registrieren Sie ein Konto über zentralisierte Plattformen wie Binance und Ouyiok, vervollst?ndigen Sie die KYC -Zertifizierung und kaufen Sie ETH mit Stablecoins. 2. Einschalten Sie mit dezentralen Plattformen mit digitalem Speicher und tauschen Sie die ETH mit Stablecoins oder anderen Token direkt aus. 3.. Nehmen Sie an Netzwerkversprechen teil, und Sie k?nnen die unabh?ngige Verpf?ndung (ben?tigt 32 ETH), Liquid Pledge Services oder One-Click-Versprechen auf der zentralisierten Plattform, um Belohnungen zu erhalten. 4. Verdienen Sie ETH, indem Sie Dienstleistungen für Web3 -Projekte erstellen, Aufgaben erledigen oder Airdrops erhalten. Es wird empfohlen, dass Anf?nger mit zentralisierten Mainstream -Plattformen beginnen, schrittweise zu dezentralen Methoden übergehen und immer Bedeutung für die Sicherheit von Verm?genswerten und die unabh?ngigen Forschung beibringen

Erstellen Sie Referenzen Tabelle, um Empfehlungsbeziehungen zu erfassen, einschlie?lich Empfehlungen, Empfehlungen, Empfehlungscodes und Nutzungszeit; 2. Definieren Sie die Beziehungen zwischen H?rern und Hasmany im Benutzermodell, um Empfehlungsdaten zu verwalten. 3. Erstellen Sie bei der Registrierung einen eindeutigen Empfehlungscode (kann durch Modellereignisse implementiert werden). 4. Erfassen Sie den Empfehlungscode, indem Sie die Parameter w?hrend der Registrierung abfragen, nach überprüfung eine Empfehlungsbeziehung aufstellen und die Selbstverantwortung verhindern. 5. den Belohnungsmechanismus ausl?sen, wenn empfohlene Benutzer das angegebene Verhalten (Abonnementauftrag) abschlie?en; 6. Generieren Sie gemeinsame Empfehlungsverbindungen und verwenden Sie URLs mit Laravel Signature, um die Sicherheit zu verbessern. 7. Empfehlungsstatistiken auf dem Dashboard anzeigen, z. B. die Gesamtzahl der Empfehlungen und konvertierten Zahlen; Es ist notwendig, sicherzustellen, dass Datenbankbeschr?nkungen, Sitzungen oder Cookies bestehen bleiben.

Das Repository -Muster ist ein Entwurfsmuster, mit dem die Gesch?ftslogik aus der Datenzugriffslogik entkoppelt wird. 1. Es definiert Datenzugriffsmethoden über Schnittstellen (Vertrag); 2. Die spezifischen Vorg?nge werden von der Repository -Klasse implementiert. 3. Die Controller verwendet die Schnittstelle durch Abh?ngigkeitsinjektion und kontaktiert nicht direkt die Datenquelle. 4. Vorteile sind ordentlicher Code, starke Testbarkeit, einfache Wartung und Teamzusammenarbeit; 5. Für mittlere und gro?e Projekte k?nnen kleine Projekte das Modell direkt verwenden.

AccessorsandMutatorsinlaravel'seloquentorMaloutOrmatorMipulatemodelattributesWenRetriesingingingValues.1

Erstellen Sie ein Laravel -Projekt und konfigurieren Sie die Datenbankumgebung. 2. Handwerker verwenden, um Modelle, Migrationen und Controller zu generieren; 3. Definieren Sie die API -Ressourcenrouting in api.php; 4. Implementieren Sie die Additions-, L?sch-, ?nderungs- und Abfragemethoden im Controller und verwenden Sie die Anforderungsüberprüfung. 5. Installieren Sie Laravelsanctum, um die API -Authentifizierung zu implementieren und Routen zu schützen. 6. JSON -Antwortformat vereinigen und Fehler behandeln; 7. Verwenden Sie Postbote und andere Tools, um die API zu testen, und erhalten Sie schlie?lich eine vollst?ndige und erweiterbare Erholung.

LaravelimplementsthemvcpatternByusingModelsfordatamanagement, ControllersforBusinessLogic und ViewsforPresentation.1) ModelsmodelleInlaravelArePowermallshandlingDataandrelationships.2) ControllersManagetheFlowbetweenModelsandviews.3) ViewsBladetemplattieren

Die Bank of America beginnt die Digital Asset Tracking, um die Anerkennung der Anerkennung von Ethereum bei der Mainstream -Finanzierung zu markieren. 1. Erh?hung der Rechtm??igkeitserkennung; 2. Es kann Institutionen für die Zuordnung digitaler Verm?genswerte anziehen. 3.. F?rdern Sie den Compliance -Prozess; 4. Best?tigen Sie die Anwendungsaussichten und den potenziellen Wert von ETH als "digitales ?l"; Ethereum ist aufgrund seines riesigen DAPP -?kosystems, 1. Upgrade -Technologie auf POS, im Mittelpunkt geworden, um die Skalierbarkeit, Sicherheit und Nachhaltigkeit zu verbessern. 2. Support Kreditvergabe, Handel und andere Finanzdienstleistungen als Kern von Defi; 3.. NFT Wohlstand unterstützen und die ?kologische Nachfrage konsolidieren; 4.. Erweitern Sie Anwendungen auf Unternehmensebene wie Lieferkettenmanagement; 5. EIP-1559 führt einen Deflationsmechanismus ein, um die Knappheit zu verbessern. Zu den Top -Handelsplattformen geh?ren: 1. Binance (Handelsvolumen)

Laravel'SimplementationofMvChasLimitations: 1) ControllersoftenHandlemorethanjustdeciding WhoichmodelandviewTouse, führend to'fat'controllers.2) eloquentmodelscantakeontoomananyresponsibilitybeyBeyonddatarepresentation.3) Ansichten
