Ce guide explique comment mettre en ?uvre le cryptage et le déchiffrement pour données sensibles dans les modèles Laravel. En suivant ces étapes, vous pouvez sécuriser les données avant de les stocker dans la base de données et les décrypter lorsque le récupérer.
? ?Prérequis
- Laravel?: assurez-vous que vous utilisez un projet Laravel.
- Clé de cryptage?: Laravel génère automatiquement une APP_KEY dans le fichier .env. Cette clé est utilisée par le service de cryptage de Laravel.
? ?étape 1?: Configurer le cryptage dans le modèle
Dans le modèle, nous utiliserons les fonctions encrypt() et decrypt() de Laravel pour gérer automatiquement le cryptage et le déchiffrement pour les champs spécifiés.
? ?Modèle Docteur
Créez ou mettez à jour le modèle Docteur avec des méthodes de cryptage et de décryptage. Nous chiffrerons les champs tels que prénom, nom, e-mail et mobile avant de les enregistrer dans la base de données.
<?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); ????}}
?????Explication
- Méthodes Setter?: utilisez set{AttributeName }Attribute() pour crypter les données avant qu'elles ne soient stockées dans la base de données.
- Méthodes Getter?: utilisez get{AttributeName}Attribute() pour déchiffrer les données lorsqu'elles sont récupérées de la base de données.
étape 2?:?Contr?leur pour le stockage et la récupération des données
Dans le contr?leur, vous pouvez gérer la validation et appelle le modèle attributs chiffrés directement sans cryptage/déchiffrement supplémentaire étapes.
? ?????DoctorController
Le DoctorController gère l'inscription en validant
saisir les données, les chiffrer via le modèle et les enregistrer dans la base de données.
Lors de la récupération des données du médecin, il décryptera automatiquement le
domaines sensibles.
<?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); ????}}
? ?Explication
- Méthode de registre?: valide la demande entrante, crée un nouveau dossier médical et crypte automatiquement les champs tels que prénom, nom, e-mail et mobile grace aux méthodes de cryptage du modèle.
- Méthode show?: Récupère un dossier médical par ID. Le les méthodes getter du modèle décryptent automatiquement les champs sensibles avant renvoyer les données.
? ?étape 3?: Configuration de la base de données
Assurez-vous que les colonnes du tableau des médecins pour les données sensibles sont d'une longueur suffisante pour gérer les données cryptées (généralement, TEXT ou LONGTEXT).
Exemple de configuration de migration?:
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();});
Remarque?: étant donné que les valeurs chiffrées peuvent être beaucoup plus longues que les valeurs en texte brut, TEXT est préférable pour les valeurs chiffrées. champs.
? ?étape 4?: Gestion des exceptions de décryptage
Pour une gestion améliorée des erreurs, enveloppez la logique de décryptage dans des blocs try-catch dans les getters du modèle?:
<?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); ????}}
? ?Notes supplémentaires
- Sécurité de l'environnement?: assurez-vous que l'APP_KEY est stocké en toute sécurité dans le fichier .env. Cette clé est essentielle pour le cryptage/déchiffrement.
- Sauvegarde des données?: si l'intégrité des données est cruciale, assurez-vous de disposer d'un mécanisme de sauvegarde, car les données cryptées ne peuvent pas être récupérées sans la bonne APP_KEY.
? ?Résumé
- Cryptage du modèle?: utilisez des méthodes de définition pour crypter les données avant de les stocker et des méthodes de lecture pour déchiffrer les données lors de la récupération.
- Logique du contr?leur?: le contr?leur peut gérer les champs cryptés directement sans code de cryptage supplémentaire .
- Configuration de la base de données?: utilisez des colonnes TEXT ou LONGTEXT pour les champs chiffrés.
- Sécurité Considérations?: sécurisez votre APP_KEY et utilisez la gestion des exceptions dans les getters pour les erreurs de décryptage.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Les applications à une page (spas) peuvent être construites à l'aide de Laravel et Vue.js. 1) Définissez le routage API et le contr?leur dans Laravel pour traiter la logique des données. 2) Créez un frontal composé dans Vue.js pour réaliser l'interface utilisateur et l'interaction des données. 3) Configurez les COR et utilisez Axios pour l'interaction des données. 4) Utilisez VUerouter pour implémenter la gestion du routage et améliorer l'expérience utilisateur.

Des méthodes efficaces pour tester les interfaces API Laravel comprennent: 1) l'utilisation du cadre de test de Laravel et des outils tiers tels que Postman ou Insomnie; 2) écrire des tests unitaires, des tests fonctionnels et des tests d'intégration; 3) Imulation d'un environnement réel de demande et gestion de l'état de la base de données. Grace à ces étapes, la stabilité et l'intégrité fonctionnelle de l'API peuvent être assurées.

La logique d'authentification de l'utilisateur Laravel personnalisé peut être implémentée via les étapes suivantes: 1. Ajoutez des conditions de vérification supplémentaires lors de la connexion, telles que la vérification des bo?tes aux lettres. 2. Créez une classe de garde personnalisée et développez le processus d'authentification. La logique d'authentification personnalisée nécessite une compréhension approfondie du système d'authentification de Laravel et prêter attention à la sécurité, aux performances et à la maintenance.

Les étapes pour créer un package dans Laravel comprennent: 1) la compréhension des avantages des packages, tels que la modularité et la réutilisation; 2) suite à la dénomination de Laravel et aux spécifications structurelles; 3) Création d'un fournisseur de services à l'aide d'artisan Command; 4) Publier correctement les fichiers de configuration; 5) Gérer le contr?le des versions et la publication de Packagist; 6) effectuer des tests rigoureux; 7) Rédaction de documentation détaillée; 8) Assurer la compatibilité avec différentes versions Laravel.

L'intégration de la connexion des médias sociaux dans le cadre Laravel peut être réalisée en utilisant le package Laravelsocialite. 1. Installez le package social: Utilisez ComposerRequireLaravel / Socialite. 2. Configurez le fournisseur de services et les alias: ajoutez une configuration pertinente dans config / app.php. 3. SET des informations d'identification de l'API: configurer les informations d'identification de l'API des médias sociaux dans .env et config / services.php. 4. Méthode d'écriture du contr?leur: ajoutez des méthodes de redirection et de rappel pour gérer le processus de connexion des médias sociaux. 5. Gérer les FAQ: assurez-vous que l'unicité des utilisateurs, la synchronisation des données, la sécurité et la gestion des erreurs. 6. Pratique d'optimisation:

L'implémentation de la fonction de réinitialisation du mot de passe dans Laravel nécessite les étapes suivantes: 1. Configurez le service de messagerie et définissez des paramètres pertinents dans le fichier .env; 2. Définir les routes de réinitialisation du mot de passe dans les routes / web.php; 3. Personnaliser les modèles de messagerie; 4. Faites attention aux problèmes d'envoi par e-mail et à la période de validité des jetons et ajustez la configuration si nécessaire; 5. Considérez la sécurité pour empêcher les attaques par force brute; 6. Une fois la réinitialisation du mot de passe réussie, forcez l'utilisateur à vous déconnecter d'autres appareils.

Les menaces de sécurité courantes dans les applications de Laravel comprennent l'injection SQL, les attaques de scripts inter-sites (XSS), le contrefa?on de demande croisée (CSRF) et les vulnérabilités de téléchargement de fichiers. Les mesures de protection comprennent: 1. Utilisez l'éloquente et le bilan de requête pour les requêtes paramétrées pour éviter l'injection de SQL. 2. Vérifiez et filtrez l'entrée de l'utilisateur pour assurer la sécurité de la sortie et empêcher les attaques XSS. 3. Définissez les jetons CSRF sous des formulaires et les demandes AJAX pour protéger l'application des attaques CSRF. 4. Vérifier strictement et traiter les téléchargements de fichiers pour assurer la sécurité des fichiers. 5. Des audits de code réguliers et des tests de sécurité sont effectués pour découvrir et corriger les vulnérabilités de sécurité potentielles.

Le middleware est un mécanisme de filtrage dans Laravel qui est utilisé pour intercepter et traiter les demandes HTTP. Utilisez les étapes: 1. Créez du middleware: utilisez la commande "phpartisanmake: middlewarecheckrole". 2. Définir la logique de traitement: écrire une logique spécifique dans le fichier généré. 3. Enregistrez Middleware: Ajoutez du middleware dans kernel.php. 4. Utilisez du middleware: appliquez le middleware dans la définition de routage.
